c++ - 每次我重新编译并运行程序时,都从C++中的HANDLE获取不同的地址?

标签 c++ memory process handle

我试图通过获取句柄并打印其值来获取C++中进程的起始地址。我尝试通过 Cheat Engine 获取Spider Solitaire的起始地址,它给了我“300905A4D”(当前为)。我尝试

HANDLE pHandle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid) 

每次我重新启动C++程序时,它都会给我一个不同的编号/地址。我一直保持蜘蛛纸牌运行,并且 Cheat Engine 一直给我相同的起始地址,但是当我打印时
cout << &pHandle; 

我的c++程序每次给我一个不同的数字。我在这里做错了什么?另外,我的C++代码也可以正常工作。我可以写到内存中,所有这些,我只是想知道为什么我没有得到 Cheat Engine 给我的相同地址,以及为什么每次都不同。

最佳答案

因为您正在打印进程句柄变量的地址,并且每次运行程序时帽子可能都不同-操作系统决定每次启动应用程序时将进程及其变量放入内存的位置。

关于c++ - 每次我重新编译并运行程序时,都从C++中的HANDLE获取不同的地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11568185/

相关文章:

c++ - 无法在 VC++ 2012 Ultimate 中加载 ICON 资源

c++ - 我如何在 C++ 中取消分配它?

c# - Process.Start 的替代 native api

python - 子进程完成时中断循环

c# - 如何判断是否触发了进程强制关闭(WaitForExit)?

c++ - Cpp 中的注册表处理

c++ - 为什么 valgrind 和 gdb 指向不同的代码行?或者 : How to malloc() and free() pointer of pointer in loop?

java - Android加载一个16KB的文件需要35秒?

c++ - 如何从应用程序中更改 "Dim the display"和 "Dimming display brightness"设置 (Windows)?

swift - 每次 FMDB 查询后内存使用量急剧增加