读书人

问两个想不通的内存分配有关问题

发布时间: 2013-01-17 10:28:54 作者: rapoo

问两个想不通的内存分配问题?
1. 有的程序是分配固定内存地址的, 所以有的时候如果这些内存地址被占用,这个程序就启动失败。我不明白的是,这种分配固定内存的方式,是如何实现的呢?
2. 比如一个游戏的内存修改器,按照道理,它作为一个进程,有着自己的内存空间,是不能够直接访问游戏的内存数据的。那么这种方式是怎么实现的呢?是使用共享内存的方式吗?如果是的话,那么就是说游戏本身必须支持共享内存模式?

望高人解答,谢谢!穷人,分数不多,望解答。 修改器 固定内存地址 共享内存
[解决办法]
1. 有的程序是分配固定内存地址的, 所以有的时候如果这些内存地址被占用,这个程序就启动失败。我不明白的是,这种分配固定内存的方式,是如何实现的呢?
答:程序分配的是虚拟地址,不是实际的物理内存地址,因此不会被其它程序占用。

2. 比如一个游戏的内存修改器,按照道理,它作为一个进程,有着自己的内存空间,是不能够直接访问游戏的内存数据的。那么这种方式是怎么实现的呢?是使用共享内存的方式吗?如果是的话,那么就是说游戏本身必须支持共享内存模式?
共享内存是进程的通信手段,而且游戏修改器是打开其它进程的页面后直接对这个页面的数据进行修改(如果这个页面有保护属性,要先修改下属性)。

建议楼主看下《Windows核心编程》,这些东西真要理解,还是要花一些功夫的。

读书人网 >C++

热点推荐