【发布时间】:2019-05-19 02:48:38
【问题描述】:
好的, 我有一个在 linux 上读取外部虚拟内存的工作程序。 这就是我想要做的: 程序 1 被执行并在内存中有特定的地址来与程序 2 通信。 我知道正在向程序 1 读写值的程序 2 正在工作 我被程序2的制作困住了,我有这个代码:
#include <iostream>
using namespace std;
int main()
{
int* i;
i = (int*)0x7ffABCDDCBA1;
*i = 1;
cout << *i << " " << i << endl;
}
注意:
这只是一个测试代码,看看它是否有效(它没有)
program1 将在程序 2 的 pid 处读取 0x7ffABCDDCBA1, 它编译得很好,但在执行时我得到“分段错误”
注意:
#include <iostream>
using namespace std;
int main()
{
int* i;
i = (int*)0x7ffABCDDCBA1;
cout << i << endl;
}
效果很好
【问题讨论】:
-
你应该知道*i和i的区别。您可能在第一个代码中取消引用无效的内存地址
-
一个进程中的内存地址在另一个进程中没有意义。这就是虚拟寻址的用途。
标签: c++ linux pointers memory segmentation-fault