c - 是否可以使用 IPC 将二维数组分配为共享内存?

标签 c ipc shared-memory

我想使用 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/

相关文章:

java - 我可以在 java 桌面应用程序和 php 网站之间使用信号量吗?

c - 预处理指令之前的空宏的标准行为

c++ - IPC 通过 mmap 文件 : should atomics and/or volatile be used?

c - 从共享内存空间 c 写入和读取问题

c - 如何知道 vfork 函数中的父进程或子进程

python - python 应用程序和注入(inject)的 DLL 之间的 IPC

c++ - 从共享内存存储和访问结构数组

为进程创建 n 个子进程

c - 从C中的函数获取返回值

c - 使用 getc() 顺序读取文本文件并使用 fwrite() 写入 bin 文件无法按预期工作?