FreeAndNil(Self);这个语句是什么意思?

解决方案 »

  1.   

    Free the memory and set the pointer to nil.
      

  2.   

    So sorry:
      Frees the memory of the current class and sets the related pointer to nil.
      

  3.   

    对于类类型的变量,在申明的时候在栈上申明一个四个字节的指针,当调用构造器的时候在堆上分配具体空间大小,所以释放的时候应该将这两个部分的空间都释放掉,但一般容易出现的事情是只释放了堆上的对象内存空间,而栈的空间没有释放掉,所以如果这个时候调用栈上的指针变量,会出现内存错误,因为这个指针现在已经没有实在意义,它所指向的堆上内存空间已经没有期望的东西!这就是我们平时说的调用野指针!所以,为了防止这种错误的发生,一定要在释放对象的时候将这两个空间全部释放掉,可以采用如下方法:1.使用FreeAndNil方法2.先释放对象空间,如Release或Free等方法,然后将对象指针设置为Nil
    对于窗体,在OnClose事件中指定Action为caFree后只是释放对象空间,所以仍然需要将窗体对象指针设置为Nil