在debug模式下运行没有问题,release下运行一段时间后程序自动消失了?
在debug模式下运行没有问题,release下运行一段时间后程序自动消失了,
请问这是什么原因造成的?该怎么调试呢?
问题点数:50、回复次数:4Top
1 楼HelloIvan2005()回复于 2006-03-01 08:24:18 得分 0
这种问题比较奇怪,建议检查指针,有 new 和delete 的地方。Top
2 楼Interwetten()回复于 2006-03-01 08:34:09 得分 0
所有new的变量我都有delete掉。除了一个用来建立链表的指针外,
pRecord *s; //在头文件中定义的一个变量
在源码中初始化并建立链表:
...
s = new pRecord;
...
在退出按钮中释放资源:
if(s) delete [] s;//我如果注释此句,程序在debug下可以运行,
//如果不注释它就会出现下面的调试错误
不注释上面那句,一运行就会报错:
Debug Assertion Failed!
Program:xxxx\xxx\xxx.exe
File:dbgheap.c
Line:1011Top
3 楼ouyh12345(五岭散人)回复于 2006-03-01 08:38:34 得分 0
链表不能这样释放:
if(s) delete [] s;
应该是:
pRecord *ptmp = s;
while(s!=NULL)
{
ptmp = s;
s = s->next;
delete ptmp;
}Top
4 楼Interwetten()回复于 2006-03-01 08:49:18 得分 0
嗯,改成逐个释放链表之后,debug下没有问题了
但是还是有检测到内存漏洞
就是出在new那个语句那里
s = new pRecord;
这是怎么回事呢?
我不是都已经释放了么Top




