小编Knu*_*dow的帖子

共享内存段内的指针

我一直在尝试这几个小时,谷歌所有我想到的东西,但我会发疯.

我有一个结构:

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.如何在共享内存段中为它们提供正确的值? …

c linux shared-memory

9
推荐指数
2
解决办法
8690
查看次数

标签 统计

c ×1

linux ×1

shared-memory ×1