运行时内存编辑软件如何工作?

时间:2017-07-07 09:13:58

标签: c++ memory runtime

我尝试制作两个简单的程序,一个只是无限期地打印存储在内存地址中的值,另一个尝试直接从该地址更改该值。我不知道它是否有用,但这是代码。

// 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 ++的例子很棒,但我也很擅长解释。

0 个答案:

没有答案