【问题标题】:memcpy and shared memory structmemcpy 和共享内存结构
【发布时间】:2018-02-17 06:39:01
【问题描述】:

我在共享内存段中有一个结构,我正在尝试使用 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));

我能够在所有分支中读写,因此访问共享内存不是问题。

【问题讨论】:

    标签: c shared-memory memcpy


    【解决方案1】:

    因为你做错了什么。

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

    应该是

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

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

    在您的情况下,您正在访问超出字符串文字的内存。那是undefined behavior

    【讨论】:

    • 解决了。非常感谢,您已经解决了一些困惑。
    • @shatter.: 那么好。一切顺利。
    猜你喜欢
    • 1970-01-01
    • 2013-01-11
    • 2016-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多