Env*_*nve 2 c++ memory pointers
我只是想知道我是否可以通过提供它的地址(在我的情况下随机)来读取内存中的任何值.我知道它不起作用,但我试过:
int e = 10;
int* p = &e;
p = 0x220202;
Run Code Online (Sandbox Code Playgroud)
这甚至都不会编译.那么,有没有办法用C++或任何其他编程语言在计算机的内存中读取内容.
那么,有没有办法在我的计算机内存中读取内容
如果您参考计算机的整个内存:不,您不能 - 至少不在现代桌面/主流操作系统上.您只能从进程的地址空间中读取内存.
看看虚拟内存.简而言之:您的指针指的是"虚拟"地址,而不是真正的地址.计算机中的特殊硬件会将这些地址转换为实际地址.操作系统定义了必须如何完成映射.这样,每个进程都拥有自己唯一的地址空间.只要操作系统的调度程序切换到另一个进程,它就会告诉硬件切换到相应的转换表.由于这种机制,您可以在进程之间获得隔离,这是一件非常好的事情:如果编程不良的应用程序访问无效内存,则只有相关进程会崩溃,而系统的其余部分不会受到影响.
想一想:如果没有这种隔离,每次测试某些指针算法时,您可能需要重新启动计算机.
| 归档时间: |
|
| 查看次数: |
5106 次 |
| 最近记录: |