问题标签 [virtualalloc]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - VirtualAllocEx 强制分配页面
MSDN 文档说 VirtualAllocEx
除非/直到实际访问虚拟地址,否则不会分配实际的物理页面。
我需要在调用 VirtualAllocEx 后立即访问物理地址,但我不能导致它们尚未物理分配。
我如何强制它在 VirtualAllocEx 之后或之后分配物理页面而不先访问虚拟内存?
delphi - VirtualAlloc - 为大文件分配空间
我目前正在尝试重写 Binary Diff 以支持更大的文件,因为GetMem
用于读取文件会限制文件大小(我想)并且我无法读取 2 个每个大小为 900 MB 的文件。
所以我想,我可以使用VirtualAlloc
,遗憾的是还没有那么好。从外观上看,第一个文件的分配工作正常 - 一旦我尝试为第二个文件分配内存,它就会返回一个空指针。不得不说我对分配内存还很陌生,所以如果我监督了一个已经回答了这个问题的线程,请原谅我(过去 4 小时我在互联网上搜索了一个解决方案)。
好吧,代码如下:
归根结底,我想使用该程序来比较两个任意大小的二进制非文本文件,并从中创建一个 Binary Diff。
c++ - VirtualAlloc 失败
我正在尝试使用 VirtualAlloc 来保留和提交一块内存,然后再次扩展该块。不幸的是,尽管 VirtualQuery 说请求的地址范围是免费的,但它返回 NULL 并出现错误 ERROR_INVALID_ADDRESS。这是我的代码:
第一次分配返回 0x00000000000d0000。对 VirtualQuery 的调用会在“信息”中产生以下数据:
我解释这意味着有 0xff 可用页面从 0xd1000 开始处于 MEM_FREE 状态。那么为什么我在 0xd1000 提交页面的尝试失败了?
我正在运行 Windows 7,这是一个 64 位版本。
我已经阅读了几篇关于 VirtualAlloc 的 StackOverflow 帖子,但它们似乎都暗示这段代码应该像我对文档的理解一样工作。
c++ - C ++获取分配部分的基地址
由于我不清楚之前我会重写我的问题。
我需要获取分配给VirtualAllocEx()
.
例如,如果我分配 0x20000 字节并获得地址 0x5000000。
我需要一种使用值 0x5015000 获取地址 0x5000000 的方法。
VirtualQuery() 返回值 0x5015000 所在的页面地址,而不是分配的内存部分的基地址。
所以我需要一种不同的方法来找到任何分配的内存部分的基地址。
c++ - 无法在 VirtualQuery 返回的空闲区域上进行 VirtualAlloc
我试图在 Windows 应用程序中加载的 DLL 中的某个内存范围内分配一定数量的内存。
我这样做的方式是使用VirtualQuery()
搜索标记为空闲并且在我需要进行分配的边界内的内存区域。我所看到的是,即使该区域被标记为MEM_FREE
VirtualAlloc()
有时无法分配内存。
代码非常接近以下内容:
VirtualAlloc()
失败时GetLastError()
返回ERROR_INVALID_ADDRESS
(487).
我解决它的方法是,如果它足够大,则mbi.RegionSize
使用页面大小步骤扫描以找到一个地址,该地址将允许我分配我需要的内存。
为什么根据VirtualQuery
整个区域应该是免费的,我应该能够在我想要的任何地址内分配,但通常当第一次VirtualAlloc
失败时,我必须循环几个步骤,直到它最终成功。
c++ - 指定不同的起始地址时,`VirtualAllocEx` 返回相同的地址?
我试图让 calc.exe 显示一个消息框,但是一旦我执行我的程序,calc.exe 总是崩溃。所以我尝试将代码注入到我自己的进程中,以便查看调试消息。这样做会给我一个异常“访问冲突......无法执行......”指向pData->msg
。然后我发现pThread
并pData
得到相同的地址。这怎么可能?我实际上设置和lpAddress
不得到相同的起始地址。VirtualAllocEx
pPage
pPage + 128
winapi - 如何(临时)从 VirtualAlloc 释放内存?
使用时,VirtualAlloc
我可以(ab)使用以下属性来简化内存管理。
除非/直到实际访问虚拟地址,否则不会分配实际的物理页面。
我运行以下代码来分配块。
这一切都很好。如果我的结构增长到 1.000.000 个元素,一切正常。
但是假设之后我的结构缩小到 1.000 个元素。
如何释放 RAM 以便在再次需要时自动神奇地提交?
警告
大卫警告我,分配一个提交的大(巨大)连续内存页面会带来很大的成本。
因此,将数组拆分为更小的块并使用类/记录抽象出内部可能更有利。
c - 带有 MEM_TOP_DOWN 的 VirtualAlloc 的 Linux/POSIX 等效项是什么?
什么是具有 MEM_TOP_DOWN 的VirtualAlloc的 Linux 或 POSIX 等价物,如果有的话?
python - Pydbg 从 VirtualAlloc 转储内存
我使用以下代码取自: http ://securityxploded.com/automation-reversing-scripting.php#Pydbg
我的问题是如何读取 VirtualAlloc 将分配的内存?我尝试了 read_process_memory 但它没有用。