“堆被损坏”这个让人崩溃的问题

用libcurl的代码直接在exe中运行没丝毫问题,但一放到dll中就问题百出,先是编译出的dll在depend中提示缺少msjava.dll,接着不管在debug或release下调试都提示“堆被损坏”,差点儿被整崩溃了,最后的解决办法让人非常之惊讶!

以下引用自http://hi.baidu.com/yhustc/blog/item/04f74c1b073da5d1ac6e75d3.html/cmtid/ba14620382936683d53f7caf

昨天调程序,recvfrom接收UDP数据,修改了一下缓冲区,将数据填进来,然后程序结束时始终报这个异常。

不管用Release还是Debug,然后参照以前的程序把项目设置修改了一下,仍然不能解决。

网上搜索,都说是数组越界造成堆栈出错,问题是我没有对接收数据的缓冲区进行太多的处理啊,只有recvfrom和一个printf设计到这个buffer,百思不得其解。从MSDN上面COPY一个UDP的例子出来,运行仍然报这个错误。

早上来了到VC6里面跑一样的程序,没问题。Debug调试,没有问题。

然后将项目从VC6转换到VC2005,问题出现了。O,F*CK!

绝望之下直接运行Release目录下的EXE,不从VS启动了,测试了一下,没有问题,没有抛出任何异常。再一次的F*CK。到底是什么问题?

我猜应该是从VS启动的时候加载了一下调试用的DLL,然后如错误信息所说“它所加载的任何DLL中有bug”。所以直接启动程序不会报这个错误。

posted @ 2011-04-12 22:13  冷寒生  阅读(4107)  评论(0编辑  收藏  举报
IT知识库