我在Windows 8.1上编写了这个非常简单的程序,并使用Mingw的gcc对其进行了编译。我用“ test.exe> t.txt”和“ test.exe> t1.txt”运行它,并且输出是不同的(即使它使用虚拟地址)。它运行了一段时间,然后崩溃了。我决定测试一下,因为我正在读一本有关操作系统的书。
它正在读取其他程序的内存吗?那不是应该不会发生吗?我可能误会了...
#include <stdio.h>
int main(int argc, char *argv[]){
int r = 0;
int p[4] = {1,5,4,3};
for(r=0; p[r]!=1111111111111111; r++){
p[2] = p[r];
printf("%d\n", p[2]);
}
return 0;
}
谢谢你。
SadSeven,我假设您是故意在数组末尾阅读。您看到的不是其他程序内存,而是程序内存中的未初始化内存。
每个程序都在其自己的虚拟内存空间中运行,操作系统的虚拟内存管理器负责此工作。您无法从程序访问另一个程序的内存(除非您都使用共享内存,但是您必须故意这样做)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句