我有以下類型的代碼:靈活的數組成員是否會增加結構的大小?
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小麥:是的,你是對的。您的評論是標題問題的正確答案。爲你+1。 – SKi