_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