_heap_alloc_dbg 崩溃


这个BUG调了我一整天-。-

基本原因是,Debug使用了的new调用Release的delete,我还不确定.

BUG的代码可能如下:

dll:
struct Status {
int iStatus;
CString str;
};

void GetStatus (Status* p) { /** do something */; }

调用代码如下:

Status st;
GetStatus (&st);

就这个简单的,看似没有错误的代码产生了问题。

st中有个CString,它是个类,析构函数会delete 内存块,它因为在内部会存在 +, =等操作,而DLL是Release的,调试程序是 DEBUG的,于是它+,=了Release版本的new 的内存块,当它析构的时候就有问题了---------

貌似解释不通啊。

------------------

反正换用DEBUG的DLL就不会有问题了。

-------------------

那DLL不是我写的---调死我了。

和MFC联系得太紧密,而且CString 在VC6和VC8的实现方式是不一样的----。它就决定了它只能用VC6进行开发,或者是通过VC6开发一个中间层的DLL才能进行调用---

--------------

闷。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM