我一直在尝试这几个小时,谷歌所有我想到的东西,但我会发疯.
我有一个结构:
typedef struct {
int rows;
int collumns;
int* mat;
char* IDs_row;
} mem;
Run Code Online (Sandbox Code Playgroud)
我不知道int*(一个矩阵)和char*的大小,直到稍后.
当我这样做时,我创建了这样的共享内存:
mem *ctrl;
int size = (2 + ((i-1)*num_cons))*sizeof(int) + i*26*sizeof(char); //I have the real size now
shmemid = shmget(KEY, size, IPC_CREAT | 0666);
if (shmemid < 0) {
perror("Ha fallado la creacion de la memoria compartida.");
exit(1);
}
ctrl = (mem *)shmat(shmemid, 0, 0);
if (ctrl <= (mem *)(0)) {
perror("Ha fallado el acceso a memoria compartida");
exit(2);
}
Run Code Online (Sandbox Code Playgroud)
这里没问题.然后我给ctrl-> rows和collumns一个值,并为所有矩阵赋值0.
但在那之后,我在char*和bam中写了一些东西,分段错误.
调试程序我看到指针,mat和IDs_row都为null.如何在共享内存段中为它们提供正确的值? …