【发布时间】:2011-07-18 11:28:04
【问题描述】:
我有以下类型的代码:
typedef struct
{
u32 count;
u16 list[];
} message_t;
...
message_t* msg = (message_t*)buffer;
msg->count = 2;
msg->list[0] = 123;
msg->list[1] = 456;
size_t total_size = sizeof(*msg) + sizeof(msg->list[0]) * msg->count;
send_msg( msg, total_size );
有问题的行是有 sizeofs 的行。我不确定计算所需空间的正确方法是否正确。
sizeof(*msg) 是否已经包含有关 list 成员的内容?
我可以用我的编译器对其进行测试,但在这种情况下,每个编译器的工作方式都相似吗?
【问题讨论】:
-
@Mitch Wheat:是的,你是对的。您的评论是对标题问题的正确答案。为你 +1。