本帖最后由 EDDGA 于 2010-12-27 19:15:31 编辑

解决方案 »

  1.   

    1.是局部变量,不可以。
    2.如果是自管理数据类型(如string,integer等)不需要,否则需要(如StringList)。
      

  2.   

    1.是局部变量,只能在当前的procedure/function里面访问;
    2.局部变量不用手动Free,VCL建立的对象除外,FreeAndNil是用来释放对象的,其它的不能用这个
      

  3.   

    procedure/function中的变量是局部变量,函数调用时在堆栈中分配存储空间,函数调用结束后自动清理调用堆栈,变量也就随着堆栈释放了。
    但是函数中创建的对象不会自己释放,因为对象(即类的实例)是在进程的堆中分配存储空间的,需要显式的调用对象的析构方法,一般调用Free方法即可。在函数中用Var声明的对象变量实际是对象的引用,该对象变量在栈中分配内存,调用结束自己释放内存,但该变量引的对象本身却是在堆中,不会自动释放,如果函数中调用Create构造方法创建对象而没有主动调用Free析构,会造成内存泄漏。
    一般是谁创建(对象)谁释放(对象)!