关于C语言指针读取内存地址的问题,高手请进

2024-12-16 03:06:51
推荐回答(5个)
回答1:

被操作系统忽悠了...

你要是在没有操作系统, 而且缓存足够小的平台上运行, 就可以得到你想要的值.

建议你补充下你应用的操作系统

如果是Windows, 你可以考虑在第二个进程中用OpenProcess先打开第一个进程. 然后就可以用ReadProcessMemory和WriteProcessMemory对第一个进程的内存进行读写

回答2:

因为0x0012FF60实际是指向一个临时的缓冲区,通常是堆栈.
通常这个值只在程序运行时有效.

你的这个问题实际并不是一个问题, 而是对程序运行方式的理解还不够透彻.
如果你实在想搞清楚,建议参考一些汇编的书籍.

回答3:

其实对于main主函数来说,它也是一个被调函数,只不过调用它的是系统而已。楼主肯定知道在C中被调函数结束后,其定义的所有变量所占的内存是被释放的,所以再想运行另一段程序用指针指向该地址,不可能得到你所认为应该存在的值的

回答4:

楼主这个idear应该说很不错,我也去试验了,用TC实验的,结果一样。
自己也不太解,估计是每一个进程都分配了自己的堆栈空间,所以0012FF60访问的并不和前一进程的0012FF60是同一物理地址。

回答5:

windows有个api ReadProcessMemory 用这个可以访问其它进程的内存地址