内存释放的问题
我的程序运行时载入数据,内存是用new动态创建出来的,用完之后用delete释放。
在debug下调试的时候内存被正确释放(用任务管理器观察数据载入前和释放后程序占的内存基本一样),但是release版本的就发现内存没有完全释放,程序占的内存比载入前大的多,不过再加载一次数据时程序所占的内存不会超过上次的量(既加载->释放->加载)。
请问有可能出现这种情况吗? 有什么好办法发现内存泄露问题?
问题点数:50、回复次数:4Top
1 楼younggle(洋溢)回复于 2005-08-01 16:14:06 得分 15
只要确认你的 new 和 delete 是配对使用的就没有问题。
但是有一点要注意,数组的内存申请和释放。如下:
char *szName = new char[64];
....
delete [] szName; //正确
delete szName; //只释放头指针,会有内存泄露Top
2 楼DentistryDoctor(不在无聊中无奈,就在沉默中变态)回复于 2005-08-01 16:22:05 得分 15
实际不行,考虑一下auto_ptrTop
3 楼DentistryDoctor(不在无聊中无奈,就在沉默中变态)回复于 2005-08-01 16:22:45 得分 5
new/delete
new []/delete []Top
4 楼seansoe(www.sysmgmt.com.cn)回复于 2005-08-01 16:25:22 得分 15
用任务管理器观察内存是不准确的,因为操作系统对内存的管理是有优化的。如果你的程序是个服务程序,只要测试它在足够长的一段时间内没有持续增长,即有增长也有释放就可以了。当然new过的内存一定要调用delete释放。Top




