- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
#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
混合使用的原因相同>.
关于c++ - 新建/删除[] 和 VirtualAlloc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7707876/
当使用 VirtualAlloc API 分配和提交具有 2 次幂页面边界大小的虚拟内存区域时,例如: void* address = VirtualAlloc(0, 0x10000, MEM_COM
我知道 C/C++ 风格的程序有内存部分、堆栈、堆、.text 等。但是当我使用 VirtualAlloc 时,它从哪里分配内存?我不认为它是堆,因为我可以只使用 HeapAlloc。 建议将不胜感激
virtualpointer=(char*) VirtualAlloc (NULL, (unsigned __int64) (1<<31), MEM_RESERVE, PAGE_READWRITE);
出于某种原因,当我的应用程序在某些配置的硬盘上运行时(RAID、随机分区、通过单独的 IDE Controller ,而不是在操作系统分区上),VirtualAlloc 返回 null 与 ERROR
我正在尝试使用 VirtualAlloc 来保留和提交一 block 内存,然后再次扩展该 block 。不幸的是,尽管 VirtualQuery 说请求的地址范围是免费的,但它返回 NULL 和错误
我正在为正在优化的 (Win7) C++ 例程编写回归测试,该例程以前释放并重新分配了许多巨大的缓冲区:内存流失。我想证明在测试期间,程序没有分配任何大内存区域(比如 16M 或更大),而是有效地重新
我试图从一个二进制文件中读取一些数据到一个用 VirtualAlloc 分配的缓冲区中。问题是我遇到了一个“糟糕的 Pr”问题并且无法执行 fread。这是我的代码: fseek(myfile,0,
VirtualAlloc 返回的内存块是否总是与页面大小对齐?换句话说,VirtualAlloc 的返回值和页面大小的模数总是为零吗? 最佳答案 嗯,是。 毕竟,你调用 VirtualAlloc 来分
在我的应用程序中,我试图在启动时通过 VirtualAlloc 分配一大块内存(大约 1GB-2GB),然后我可以稍后将其分割以供整个应用程序的其余部分使用。在 Debug模式下,我想在 Virtua
假设我使用 VirtualAlloc() 从 0x06000000 到 0x06010000 分配了几页连续内存(即 16 个 4KB 页),其中 PAGE_READWRITE保护。但过了一段时间,我
我正在使用 C# 开发应用程序 SFX/Protector,我希望 protected 程序集从字节数组执行,而不是将其写入硬盘,以便逆向工程更加困难。 我在一个字节数组中有一个程序(它有一个有效的入
我在使用 virtualalloc 时有一些奇怪的行为。我在使用 C++,Visual Studio 2010。 我有两件事要分配,我正在使用 VirtualAlloc(我有我的理由,与问题无关) 1
我正在将代码从 C++ 转换为我的 VB.NET 应用程序。这是 C++ 代码: typedef int (__stdcall *init_t)(uint32_t value,uint32_t pa
我想知道是否有比malloc/free低一级的跨平台分配器。 例如,我想要一些在 Linux 中简单地调用 sbrk 并在 Windows 中调用 VirtualAlloc 的东西(可能还有两个类似的
重要:在您在这里花费太多时间之前向下滚动到“最终更新”。事实证明,主要的教训是提防单元测试套件中其他测试的副作用,并始终在孤立地重现事物,然后再仓促下结论! 从表面上看,以下 64 位代码使用 Vir
我需要使用 VirtualAlloc/VirtualAllocEx 做什么? 举个例子,我发现的一个案例——如果我分配了 4 GB 的虚拟内存,那么如果我不使用所有虚拟内存,那么我就不会花费物理内存,
我想知道是否有可能确定一个虚拟地址(指针)是否属于以前的 VirtualAlloc 调用(如果可能的话不写入页面)。如果 VirtualFree 与 MEM_RELEASE 一起使用,它可以自动设置
在 VirtualFree 的 msdn 文档中 BOOL WINAPI VirtualFree( _In_ LPVOID lpAddress, _In_ SIZE_T dwSize, _
我需要使用 VirtualAlloc 为我的项目分配可执行内存,以便 JIT 将自定义脚本格式重新编译为 x86/etc。但我感到困惑的是,其他人似乎都没有注意到,而且它的行为似乎明显缺乏细节。 我知
我想调整由 MS 窗口的 VirtualAlloc 分配的内存区域的大小。查看 VirtualFree 文档,可以只部分取消提交一个区域,但不可能部分释放它。即可以释放部分物理内存,但不能释放部分虚拟
我是一名优秀的程序员,十分优秀!