memcpy 和共享内存结构

memcpy and shared memory struct

我在共享内存段中有一个结构,我正在尝试使用 memcpy 访问我的结构中的二维数组。

struct shared_mem_struct{

        int proc_id;
        int flag[21];
        int turn;
        char bounded_buffer[5][200];

};

我正在尝试使用 memcpy 访问 bounded_buffer,但我总是收到垃圾。

memcpy(shared_mem->bounded_buffer[z], "empty", sizeof(shared_mem));

我已经阅读了 memcpy 的文档,但我对有效的解决方案一无所知。我也试过:

memcpy(shared_mem->bounded_buffer[z], "empty", sizeof(shared_mem->bounded_buffer[index));

我可以在所有分叉中读写,因此访问共享内存不是问题。

因为你做错了。

memcpy(shared_mem->bounded_buffer[z], "empty", sizeof(shared_mem));

应该是

memcpy(shared_mem->bounded_buffer[z], "empty", strlen("empty")+1);

因为它不是您要复制的字符的缓冲区字节大小,而是您要从 "empty" 复制这些字母。这就是为什么长度应该是1加上长度

在您的例子中,您正在访问超出字符串文字范围的内存。那是 undefined behavior