共享内存系统 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];
我在 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];