我創建了一個常規的dll,我有一個方法GetRecord
爲RecordInfo
結構分配內存。在DLL中分配完成時釋放客戶端中的內存?
struct RecordInfo{
// Some Data member
}
BOOL GetRecord(RecordInfo *& pRecordInfo)
{
// Allocate RecordInfo, fill data and return as out paramter.
}
現在我從MFC應用程序和完成我的工作後訪問此dll。我使用delete在客戶端發佈RecordInfo。
delete pRecordInfo;
在發佈模式下沒有問題,但在調試模式下,應用程序顯示斷言失敗。有人能解釋這種行爲背後的原因嗎?
你好像有堆腐敗。您可以嘗試的一件事是在Visual Studio中啓用第一次機會異常,並查看是否可以找到損壞的原因。 – Naveen
請注意,調試構建實際上是_helping_您的診斷基礎結構和相關的斷言失敗;而發佈版本正在悄然失敗。 (通常,在移植到發佈版本之前,應確保調試版本正常運行。) –
您不能從一個分配器分配內存,然後將其釋放到另一個分配器。 –