很奇怪的一个问题,盼高手回音

zjtyx_2001 2008-12-05 02:26:49
今调试程序如下:
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赋值正确,然后程序可接着正常运行。
该情况可复现,每次都在同一个时间到同一个地方出错。
但采用执行运行而非调试运行,则程序非法退出。
采用诸多方法检查,程序没有内存泄露。

一句话总结:不设断点调试运行,会自动中断进入内存分配库函数,调用断点生成函数,生成一个断点,程序停止,单步调试能过。
直接执行,不用调试,会非法退出程序。所以程序无法在无人值守情况下跑完!

望高手解惑?
...全文
98 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
OenAuth.Net 2008-12-05
  • 打赏
  • 举报
回复
vc6的话,那我就无语了,如果我遇到这样的问题,就重建一个MFC,然后写一个简单的语句来测试,再不行的话,就用别的编译器~~~~呵呵。
zjtyx_2001 2008-12-05
  • 打赏
  • 举报
回复
用的VC6.0
OenAuth.Net 2008-12-05
  • 打赏
  • 举报
回复
LZ用的什么编译器,
VS2005以上的话,最好strCode.Format(TEXT("%s"),unit_code);//
lsldd 2008-12-05
  • 打赏
  • 举报
回复
诡异之极!关注之,坐盼高手光顾。

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧