将指针分配给特定内存地址并更改其值后出现分段错误

时间:2018-12-18 16:21:54

标签: c++ linux pointers memory segmentation-fault

好吧, 我有一个工作程序,可以在linux上读取外部虚拟内存。 这就是我想做的: 程序1被执行并在内存中具有特定的地址以与程序2通信。 我知道程序2正在和程序1进行读写操作 我对程序2的制作感到困惑,我有以下代码:

#include <iostream>
using namespace std;
int main()
{
  int* i;
  i = (int*)0x7ffABCDDCBA1;
  cout << i << endl;
}

注意:

这只是一个测试代码,以查看它是否有效

program1会在程序2的pid处读取0x7ffABCDDCBA1, 它可以正常编译,但是执行时出现“分段错误”

注意:

 <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
    </dependency>

工作正常

1 个答案:

答案 0 :(得分:3)

您正在访问一些随机的内存位置,该位置很可能不属于您的进程地址空间,因此会导致未定义的行为。

您应该在进程How to use shared memory in Linux之间使用共享内存。

其他技术很少,但是这种技术最常用于此目的。