小编Ser*_*yan的帖子

共享内存指针分段错误

嘿我正在尝试在两个进程之间创建一个共享对象.并尝试读取和更改每个进程中的值.这是我的简单结构.

编辑:我在我的结构中添加了一个构造函数.

struct shared{
    shared(){
        value = 10;
        name = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA";
    }
    int value;
    string name;
};
Run Code Online (Sandbox Code Playgroud)

我试过在调用fork()之前和之后调用shmat()但是没有任何改变它仍然给出了分段错误.

编辑:并在shmat()后添加一个检查,看看它是否失败.

#include <unistd.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <iostream>
#include <sys/shm.h>
#include <string.h>

using namespace std;

struct shared{
    shared(){
        value = 10;
        name = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA";
    }
    int value;
    string name;
};

int main(){
    int shm_id = shmget(IPC_PRIVATE,sizeof(shared),0);

    if(shm_id == -1){
        cout<<"shmget() failed "<<endl;
        return -1;
    }
    pid_t pid = fork();
    if(pid == -1){
        cout<<"fork() failed "<<endl;
        return -2;
    }

    shared* sharedPtr = …
Run Code Online (Sandbox Code Playgroud)

c++ shared-memory

7
推荐指数
1
解决办法
619
查看次数

标签 统计

c++ ×1

shared-memory ×1