很奇怪的一个问题,盼高手回音
今调试程序如下:
char unit_code[17];
....
....
CString strCode="";
strCode.Format("%s",unit_code);//A
....
当取消一切断点,调试运行时,大约3个小时后,会在strCode.Format("%s",unit_code)处自动进入一个断点,程序中断,
此时,unit_code取值正常。
调用“Alt+7”,发现断点停在给strCode分配内存处,好像内存分配出错。然而,在此现场单步调试,程序能正常运行,执行完
strCode.Format("%s",unit_code)语句,且strCode赋值正确,然后程序可接着正常运行。
该情况可复现,每次都在同一个时间到同一个地方出错。
但采用执行运行而非调试运行,则程序非法退出。
采用诸多方法检查,程序没有内存泄露。
一句话总结:不设断点调试运行,会自动中断进入内存分配库函数,调用断点生成函数,生成一个断点,程序停止,单步调试能过。
直接执行,不用调试,会非法退出程序。所以程序无法在无人值守情况下跑完!
望高手解惑?