好吧,这是令我困惑的......下面的代码是在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类的动态内存。 –