gpt4 book ai didi

c++ - 任意清理内存,同时避免读取访问冲突

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

我正在编写一个调试工具,它从另一个进程获取内存地址并显示那里的内存以及它周围的所有内存。通常,像这样读取内存可能会导致读取访问冲突,具体取决于地址,但如果用户删除进程不拥有的内存或选择一个奇怪的地址,我不想崩溃。

给定一个地址,即使是像 0x00000000 这样肯定会失败的地址,我如何在不违反程序的情况下尝试访问它而不中止我的程序?

最佳答案

VirtualQueryEx可用于迭代您有权访问的任何进程的所有页面,以检查页面保护。

QueryWorkingSetEx类似但过滤到在内存中分页,也称为 working set , 并且可以提供更详细的信息。

ReadProcessMemory最基本的是,一个包裹在内核异常处理程序中的 memcpy。你永远不会(正确地)使用它而崩溃,并且可以检查 GetLastError看看为什么会发生任何失败。

关于c++ - 任意清理内存,同时避免读取访问冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59079610/

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