C++可变长结构体

根据代码来看很容易理解,下面就是实际的代码。
变长结构体的核心思想就是在结构体的最后一个数据结构为一个指针,这个指针指向的是这个结构体的末尾数据数组的首地址。

#include <stdlib.h>

typedef struct stru_zmq_server_msg
{
    int deviceId;
    int msgCode;
}TS_ZMQ_SERVER_MSG;

typedef struct stru_tcp_server_msg
{
    int msgLength;
    int msgBodyLen;
    TS_ZMQ_SERVER_MSG zmqMsgBody[1];
}TS_TCP_SERVER_MSG;


int main()
{
    int len = sizeof(TS_TCP_SERVER_MSG) + sizeof(TS_ZMQ_SERVER_MSG) * 2;
    TS_TCP_SERVER_MSG* tdata = (TS_TCP_SERVER_MSG*)malloc(len);
    tdata->msgLength = len;
    tdata->msgBodyLen = 2;
    TS_ZMQ_SERVER_MSG* data = (TS_ZMQ_SERVER_MSG*)tdata->zmqMsgBody;

    data[0].deviceId = 100;
    data[0].msgCode = 1;
    data[1].deviceId = 101;
    data[1].msgCode = 2;
    free(tdata);
    return 0;
}

转载文章
https://www.cnblogs.com/dangerman/archive/2012/12/16/2820825.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。