这次的项目中用到同事写的一个ComboBox控件,以前项目中也用过没问题,但这次在界面上第二次点击控件的下拉按钮就报错,今天跟进代码看了下,定位在FreeNode时调用FreeMem报错。Node是一个Record,使用AllocMem分配的空间。FastMM弹出的提示是说在其它地方已经释放了这个内存,这里又释放了一下。在代码中找了半天也没看到什么地方提前释放了这片内存。又仔细看了看FastMM的异常报告,是说在同一个线程里,行情代码释放了这片内存。
重新编译了这段代码,在生产环境里运行没有问题,意识到可能是生产环境关闭了FastMM检测。于是在调试环境下将FastMM内存泄露检测功能关闭,再点击ComboBox不报错了,程序运行也没有异常出现。