如何将字符串数组附加到共享内存? C

时间:2012-11-11 18:58:41

标签: c arrays string ipc shared-memory

第一次使用共享内存,我的项目是让读者和编写者访问共享字符串并修改或读取它们等。我知道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是正确的我已经三次检查它没有提起它。

感谢

2 个答案:

答案 0 :(得分: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不允许这样做。

答案 1 :(得分:1)

不要这样使用,因为records[0][0]属于char类型而不是(char**)