好吧,這是令我困惑的......下面的代碼是在DLL中,當我的控制檯應用程序調用此代碼時,它突然在delete[] lpBuffer
行處發生訪問衝突。我一整天都在使用這些代碼,而且根本沒有改變它。直到現在,它一直工作得很好。新/刪除導致訪問衝突
訪問衝突消息
未處理的0x6948b1a5在rhcopy.exe例外:0000005:訪問衝突讀取位置0x4de1c37f。
庫代碼
#define MAX_PACKET_SIZE 0x3FFF
DWORD MyClass::GetFile(LPCSTR lpszRemoteFile, LPCSTR lpszLocalFile)
{
LPBYTE lpBuffer = NULL;
// ...
lpBuffer = new BYTE[MAX_PACKET_SIZE];
// ...
if(NULL != lpBuffer)
delete[] lpBuffer;
// ...
}
難道我做錯了什麼?
在旁註:我一直在考慮將lpBuffer
轉換成矢量。意見?
編輯
我要感謝你們的幫助!但顯然......這不是問題所在。問題實際上是在調用GetFile(...)
之後發生的調用應用程序中的printf()
聲明。我對這種混亂表示抱歉。看起來微軟的調試工具並沒有指向導致錯誤的線路,而是指向執行的最後一行。我已投票結束這個問題。
「...」部分是什麼? –
告訴我們如何使用'lpBuffer',即什麼被'...'隱藏。你的問題幾乎肯定在那裏。 –
是的,只要有可能,用'unique_ptr'和'vector'替換RIAA類的動態內存。 –