gpt4 book ai didi

c - 共享内存和指针

转载 作者:行者123 更新时间:2023-11-30 15:13:44 26 4
gpt4 key购买 nike

两个进程(或程序)正在使用相同的System V共享内存段,这基本上就是这个结构

/* file: shmem.h */
struct Shmem{
int *array;
}

从程序1中,我像这样初始化共享内存

/* file: program1.c */
Shmem_init(shmem, siz);
for (int i=0; i<siz; i++)
shmem->array[i] = number;

其中Shmem_init是这样实现的

/* file: shmem.c */
void Shmem_init(Shmem *shmem, int siz){
shmem->array = (int *)malloc(siz * sizeof(int));
}

然后,如果我尝试从program2访问shmem->array[i],我的程序就会卡住并且不执行任何操作(未定义的行为?)

我应该预料到会这样吗?是不是因为元素array[1], array[2], ...存储在program1的堆中,因此program2无法访问?

谢谢

[ 不要介意诸如 shmget()shmat() 之类的东西,这些都会被处理]

最佳答案

您回答了自己的问题... malloc 返回的指针仅对调用它的进程有效。

关于c - 共享内存和指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34384814/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com