delphi 本身就存在内存泄漏的问题,但是对开发者而言,要养成创建了就要释放的习惯。多查找一下你的 create 、 new
哪位大虾知道怎么用MemProof查程序的内存泄漏吗?
有BoundCheck for Delphi,但是使用有一点麻烦,要使用Delphi的debug版本dcu编译,还要设置路径,最后查出来泄漏的地方又多得要命,(很多其实是Delphi自己管理的,也说不清是Delphi的bug还是BoundCheck查得太严了)。还有一个办法,是逐一屏蔽可疑的功能模块,查看内存,gdi等的占用率,如有明显增加,就可以初步判定泄漏的位置。还有就是对于需要频繁分配内存的地方,建议自己预先分配一定量的内存,然后自己管理,而不要使用GetMem,可以避免一些内存碎片,也可提高速度。不过最主要的是规范和好的算法。
try
except
或者
try
finally不过你不必为你在堆栈中分配的内存有任何忧虑,堆栈中的变量、结构你都可以认为会自动的释放,其实并存在所谓的释放,呵呵。Delphi中没有任何主动分配内存的函数可以在堆栈上面分配内存。