共享内存系统 V C 中的矩阵问题

problem with matrix in shared memory System V C

我在 C 的共享内存中使用矩阵时遇到问题。

我在这里综合了代码:

#define MATRIX 1518

int (*matrix)[5], shmMatrix;
shmMatrix = shmget(MATRIX, sizeof(int[5][9]), IPC_CREAT | IPC_EXCL | 0770);
matrix = shmat(shmMatrix, NULL, 0);

for (int i = 1; i <= 8; i++) matrix[0][i] = -5;

但是如果我在 shm 中打印矩阵,则会出现:

|       0       -5      -5      -5      -5      -5      -5      -5      -5      |
|       -5      -5      -5      -5      0       0       0       0       0       |
|       0       0       0       0       0       0       0       0       0       |
|       0       0       0       0       0       0       0       0       0       |
|       0       0       0       0       0       0       0       0       0       |

为了在 shm 中创建矩阵,我使用了

我找到了解决方案。

创建指针数组时,我必须将行数 (5) 更改为列数 (9)。

(*matrix)[9];