2

次のような構造体があります。

struct data {
  int code;
  char name[25], fnum[8];
};

次に、次のように共有メモリとして使用しようとします。

int dataSID = shmget(100002, sizeof(struct data), IPC_CREAT | 0666);

次のように取り付けます。

struct data *com = shmat(dataSID, 0, 0);

最後に、次のような値を入力してみます。

(*com).code = 1;
scanf("%s", (*com).name);

そして、でセグメンテーション違反が発生しscanfます。

私は何を間違っていますか?

shmat構造体にメモリを適切に割り当てていますか?

4

1 に答える 1

1

文字配列の場合は、いつでもstrcpy()またはstrncpy()を使用できます。そのうち、バッファ オーバーフローを回避するのに役立つ strncpy() が推奨されます。

于 2013-02-07T10:05:32.077 に答える