DEBUG版本下程序一启动(还没有进入到main函数)就出错!

迷途的书童 2013-01-16 09:08:53
DEBUG版本下程序一启动(还没有进入到main函数)就出错!
出错的地方是系统函数中:
C:\Program Files\Microsoft Visual Studio 9.0\VC\crt\src\dbgheap.c文件下的
_calloc_dbg(...)函数中的下行:

errno = errno_tmp; // recall, #define errno *_errno()
奇怪的是只有Debug版本出问题,Release版本没有问题!
好像在window系统下 errno定义为一个函数指针
#define errno (*_errno())

如下图:

保报错信息如下:

不知道各位有没有遇到过这样的问题呢?大分献上!谢谢
...全文
534 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
迷途的书童 2013-01-16
  • 打赏
  • 举报
回复
嗯,使用了stl的set,和Map,好像系统关于STL库的调用和系统的设定有冲突! 但是这个STL总要用到,有不能不用!
jiuzhoulh 2013-01-16
  • 打赏
  • 举报
回复
是不是楼主使用了啥动态或是静态库,只能在Release模式下运行?
MakeUrChois 2013-01-16
  • 打赏
  • 举报
回复
debug因为需要跟踪很多内存等信息,所以可能在一些关键字上进行了封装替换。 比如MFC里面,new关键字就被替换为DEBUG_NEW。有时候会与某些第三方的内存管理机制发生冲突而报错。 只能手动注释禁掉。 不太清楚LZ的问题,不过可以从这方面进行调查。希望早日解决问题。
漫步者、 2013-01-16
  • 打赏
  • 举报
回复
断点看F5,试试,出错出,请查看Call Back看看
zslInSz 2013-01-16
  • 打赏
  • 举报
回复
_calloc_dbg 调试堆分配失败,这个函数只有debug的时候才会用到,release时不分配调试堆。更深入的原因就不清楚了。
迷途的书童 2013-01-16
  • 打赏
  • 举报
回复
应该是同时调用动态库和静态库的原因,程序需要调用静态库, 但我把运行时库设定为Multi-threaded Debug DLL (/MDd) 调试就出问题! 把运行时库设为: Multi-threaded DLL (/MD) 在debug就编译不通过! 报: rror LNK2019: unresolved external symbol __imp___CrtDbgReportW referenced in function "public: bool __thiscall std::_Tree<class std::_Tset_traits<unsigned int,struct std::less<unsigned int>,class std::allocator<unsigned int>,0> >::const_iterator::operator==(class std::_Tree<class std::_Tset_traits<unsigned int,struct std::less<unsigned int>,class std::allocator<unsigned int>,0> >::const_iterator const &)const " (??8const_iterator@?$_Tree@V?$_Tset_traits@IU?$less@I@std@@V?$allocator@I@2@$0A@@std@@@std@@QBE_NABV012@@Z)
赵4老师 2013-01-16
  • 打赏
  • 举报
回复
在占用内存空间较大的局部数组声明的前面加static将其从堆栈数据段挪到全局数据段即可。

64,646

社区成员

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

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