小编Chi*_*hiP的帖子

C - 共享内存 - 共享结构中的动态数组

我正在尝试共享像这个
例子的结构:

typedef struct {
    int* a;
    int b;
    int c;
} ex;
Run Code Online (Sandbox Code Playgroud)

在进程之间,问题是当我使用malloc初始化'a'时,它变为私有的进程堆执行此操作(或者至少我认为这是发生的事情).有没有办法用这个有效的结构创建共享内存(使用shmget,shmat)?

编辑:我在Linux上工作.
编辑:我有一个初始化缓冲区的进程,如下所示:

key_t key = ftok("gr", 'p');   
int mid = shmget(key, sizeof(ex), IPC_CREAT | 0666);    
ex* e = NULL;
status b_status = init(&e, 8); //init gives initial values to b c and allocate space for 'a' with a malloc
e = (ex*)shmat(mid, NULL, 0);
Run Code Online (Sandbox Code Playgroud)

另一个进程将自己附加到共享内存,如下所示:

key_t key = ftok("gr", 'p');
int shmid = shmget(key, sizeof(ex), 0);
ex* e;
e = (ex*)shmat(shmid, NULL, 0);  
Run Code Online (Sandbox Code Playgroud)

然后从a获取一个元素,在这种情况下,在位置1

int i …
Run Code Online (Sandbox Code Playgroud)

c memory malloc shared dynamic

13
推荐指数
2
解决办法
1万
查看次数

标签 统计

c ×1

dynamic ×1

malloc ×1

memory ×1

shared ×1