自定义函数内部声明变量的内存释放问题 在函数内部声明一变量,返回值也是这个变量值,这个变量是个TStrings类型,这个类型的变量值用不用考虑释放free啊 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 需要释放free;一般函数执行完后,会有一个对象接收它,通过它可以释放。不过最好采用过程的方法,能过参数将对象传进去。 动态创建的对象实例都是在堆中分配内存的!这些内存空间的管理都要由程序员自己负责.所以必须你来释放。如上面“无天”所讲一般地函数返回的指针就可以代表了这个对象实例,你可以利用这个来进行内存管理。一般的通过过程操作是类似这样的;procedure someMethod(amember:Tstrings);var listmember:Tstringlist; listmember:=tstringlist.create;//在外部创建对象 someMethod(listmember);//通过引用来操作对象。 listmember.free; //释放对象。 你自己创建的对象一定要自己释放。一般的原则上是谁拥有,谁释放。对于你这情况,如果函数内部仅是创建,就象一个类工场,则由接收这个对象的所有者来释放。或者你可以写为procedure GetStrings(var list:TStringList);beginend;由调用者先创建,在执行GetString。 关于用IMAGE控件显示验证码的问题 急,sql远程访问,高手请进。 要学delphy了 如何将程序中统计后的数据显示在FastReport的报表中 WORD关闭时,怎么才能不保存修改?内已有代码。 超难存储过程,高分求解,不够再加,高手快来!!! sql操作的问题 【求助】一个关于注入调用的问题 快过春节了,上www.hbpcc.net/unisoft上查查万年历吧,还是源码 各位大侠,请帮帮我!! 要接分吗? 来啊! 不定期结贴!! 新手急求多线程解决方案。送上50分!
一般函数执行完后,会有一个对象接收它,通过它可以释放。不过最好采用过程的方法,能过参数将对象传进去。
如上面“无天”所讲一般地函数返回的指针就可以代表了这个对象实例,你可以利用这个来进行内存管理。一般的通过过程操作是类似这样的;
procedure someMethod(amember:Tstrings);var
listmember:Tstringlist; listmember:=tstringlist.create;//在外部创建对象
someMethod(listmember);//通过引用来操作对象。
listmember.free; //释放对象。
一般的原则上是谁拥有,谁释放。对于你这情况,如果函数内部仅是创建,就象一个类工场,则由接收这个对象的所有者来释放。或者你可以写为procedure GetStrings(var list:TStringList);
beginend;由调用者先创建,在执行GetString。