我想使用 IPC 将共享内存分配为二维数组。我尝试了以下方法:
id_shmem = shmget(ipc_key, sizeof(int)*rows*columns, IPC_CREAT|0666);
matrix = (int **)shmat(id_shmem, 0, 0);
问题是每当我尝试向矩阵中写入内容时,都会出现段错误。
最佳答案
int** 不是二维数组,而是一个指针数组。您不应该将指针存储在共享内存中,因为共享内存段可能在不同的进程中分配在不同的地址。尝试使用简单、平面的一维数组,它将“模拟”带有一些索引魔法的二维数组,即。
x,y -> y*width+x
关于c - 是否可以使用 IPC 将二维数组分配为共享内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1961504/