繁体   English   中英

如何从一个结构指针复制数据到另一个结构成员

[英]how to do a copy of data from one structure pointer to another structure member

我正在将结构的地址传递给函数。

void validate(void *ptr)
{
    // A variable of type Msgmt Structure
    Msgmt msg;
    memset(&msg, 0, MSG_SIZE);

    // Type casting the void pointer to this structure dev_t
    dev_t *elem = (dev_t*)ptr;
    msg.msg_id = 10;  
    if (elem->devCategory == VAL){  
        // This statement crashes the code
        // memcpy(msg.messageData.value.data, elem->data, LEN);

        // This statement goes through 
        memcpy(&msg.messageData.value.data,elem->data,LEN) ; 
    }

    // ... do something
}

messageData是struct msg中的联合,value是联合的成员,data是无符号字符的数组。

我应该如何对msg.messageData.value.data elem->data进行memcpy到msg.messageData.value.data elem->data是一个unsigned char数组)

谢谢 !!!

该语句崩溃,因为指针为NULL。

在这里您清除成员。

    memset(&msg, 0, MSG_SIZE);

    // Type casting the void pointer to this structure dev_t
    dev_t *elem = (dev_t*)ptr;

这是您初始化某件事的唯一方法。

    msg.msg_id = 10;  
    if (elem->devCategory == VAL){  

在这里,您将访问NULL指针,幸运的是,该指针崩溃了。

        // This statement crashes the code
        // memcpy(msg.messageData.value.data, elem->data, LEN);

在这里,您很可能会损坏其他内存,而不会崩溃。

        // This statement goes through 
        memcpy(&msg.messageData.value.data,elem->data,LEN) ; 
    }

    // ... do something
}

必须先为msg.messageData.value.data分配一些已定义的内存,然后才能将其用作memcp的目标。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM