gpt4 book ai didi

c++ - 新建/删除[] 和 VirtualAlloc

转载 作者:行者123 更新时间:2023-11-28 01:03:21 28 4
gpt4 key购买 nike

#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 是未定义的。

此外:

您不能将 VirtualAllocdelete 混合使用,原因与您不能将 mallocdelete 混合使用的原因相同>.

关于c++ - 新建/删除[] 和 VirtualAlloc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7707876/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com