【提问】请问procedure里面声明的变量,是局部变量吗? 本帖最后由 EDDGA 于 2010-12-27 19:15:31 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1.是局部变量,不可以。2.如果是自管理数据类型(如string,integer等)不需要,否则需要(如StringList)。 1.是局部变量,只能在当前的procedure/function里面访问;2.局部变量不用手动Free,VCL建立的对象除外,FreeAndNil是用来释放对象的,其它的不能用这个 procedure/function中的变量是局部变量,函数调用时在堆栈中分配存储空间,函数调用结束后自动清理调用堆栈,变量也就随着堆栈释放了。但是函数中创建的对象不会自己释放,因为对象(即类的实例)是在进程的堆中分配存储空间的,需要显式的调用对象的析构方法,一般调用Free方法即可。在函数中用Var声明的对象变量实际是对象的引用,该对象变量在栈中分配内存,调用结束自己释放内存,但该变量引的对象本身却是在堆中,不会自动释放,如果函数中调用Create构造方法创建对象而没有主动调用Free析构,会造成内存泄漏。一般是谁创建(对象)谁释放(对象)! 求助,电脑没串口,如何编程以及调试 请问能不能把用Socket写收发过程写到动态库里!!!!!!!! 准备换坑了!放分100 急!接口问题(IDispatch)!(是高手的进来看看~其实也非常简单) 在delph里如何把表中的数据导出到word或excel中呢.请赐教. 我在本地数据库中做这样的SQL操作有错,那为可以帮帮? 如何做法律法规软件?如何实现?(来者有分) 原代码的形成,帮助 请大家推荐流媒体的东西呀!各位请进 >>>>>>>>>这种光盘怎么刻?!!!!!!!!!!! 数据库开发 应该向导创建还是用create代码创建,优势在哪里 DelphiXE怎么设置窗体默认字体
2.如果是自管理数据类型(如string,integer等)不需要,否则需要(如StringList)。
2.局部变量不用手动Free,VCL建立的对象除外,FreeAndNil是用来释放对象的,其它的不能用这个
但是函数中创建的对象不会自己释放,因为对象(即类的实例)是在进程的堆中分配存储空间的,需要显式的调用对象的析构方法,一般调用Free方法即可。在函数中用Var声明的对象变量实际是对象的引用,该对象变量在栈中分配内存,调用结束自己释放内存,但该变量引的对象本身却是在堆中,不会自动释放,如果函数中调用Create构造方法创建对象而没有主动调用Free析构,会造成内存泄漏。
一般是谁创建(对象)谁释放(对象)!