#include <Windows.h>
#include <iostream>
using namespace std;
int main(void)
{
unsigned char* pFoo = new unsigned char[1000];
pFoo = (unsigned char*)VirtualAlloc(NULL, 1000, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
VirtualFree(pFoo, 0, MEM_RELEASE);
delete[] pFoo;
cin.ignore();
cin.get();
return 0;
}
这对我来说崩溃了
delete[] pFoo;
我知道这是由于VirtualAlloc崩溃的原因,但是我不确定如何解决此问题...
最佳答案
您正在使用相同的变量。因此,您的第一个分配被泄漏。
用VirtualFree
释放它之后,指针无效。因此,delete
尚未定义。
此外:
出于无法将VirtualAlloc
与delete
混合的相同原因,不能混合malloc
和delete
。