0

初めて共有メモリを使用する私のプロジェクトは、リーダーとライターが共有文字列にアクセスして変更または読み取ることなどです。mallocが機能しないことは知っていますが、2D文字列配列をメモリにアタッチする方法がわかりません。コンパイラからこれを取得し続けます:

警告:代入はキャストなしでポインタから整数になります

    int array_id;                         // id for the shared memory segment
    char records[10][50];                // the shared memory segment array

    // attach the reader to the shared segment
    fread(&newrecord, sizeof(id_record), 1, id_file);
    array_id = newrecord.id;

    printf("%d\n", array_id);

    records[0][0] = (char**) shmat(array_id, (void*) 0, 0);
    if (records[0] == (void*)-1) {
            perror("Array Attachment Reader");
    }

arrayidは正しいです。トリプルチェックしましたが、表示されません。

ありがとう

4

2 に答える 2

4

共有メモリを接続する必要がありますが、ポインタを保存します。

char (*records)[10][50];   // Pointer to an array

records = shmat(array_id, (void *)0, 0);

if ((void *)records == (void *)-1) ...error...

strcpy((*records)[0], newrecord);

records配列が格納されているアドレスを変更しようとしていました。Cはそれを許可していません。

于 2012-11-11T19:08:36.363 に答える
1

タイプではないrecords[0][0]ので、このように使用しないでくださいchar(char**)

于 2012-11-11T19:07:45.083 に答える