我尝试制作两个简单的程序,一个只是无限期地打印存储在内存地址中的值,另一个尝试直接从该地址更改该值。我不知道它是否有用,但这是代码。
// printing program
int main() {
int *ptr { new int(255) };
cout << ptr << '\n'; // to know the address for the second program
while(true) cout << '\r' << *ptr;
return 0;
}
-
// editing program, gets run after first program
int main() {
int *ptr { (int*)0xabcdef }; // the address that the first one prints.
*ptr = 256;
return 0;
}
但是当我尝试更改它时,它会给我一个Segmentation fault
错误(我可能错了,因为我不在家确认这个),这表示内存地址不可访问从当前的过程。
所以我的问题很简单,一个进程如何在不属于该进程的内存地址上读写值?从我看来,第一个程序不需要额外的代码供编辑器工作。一个C ++的例子很棒,但我也很擅长解释。