看看這兩個結構嵌套結構中的數據如何存儲和填充?
struct parent_t
{
short num1;
char chrA;
char chrB;
char chr1;
};
struct child_t
{
struct parent_t parent;
char chr2;
};
正如我們所知,填充可能加入到結構成員,以便將其提高到一個舒適的RAM友好的大小。在parent_t
的情況下,chr1
可能會填充因爲它的微不足道。雖然chrA
和chrB
可能會合並,並在RAM中共享相同的單詞。
現在,如果我們看看child_t
,它有chr2
,它本身會被填充。我的問題是chr1
和chr2
是optomise如chrA
和chrB
?如果是這樣,那叫什麼?
對於這個例子,我假設1字= 1短= 2個字符。
我懷疑你的問題的答案是編譯器特定的。不同的編譯器可能會以不同的方式進行填充和對齊。你可以嘗試轉儲內存(使用地址和sizeof())並檢查。 – eyalm
http://stackoverflow.com/questions/4306186/structure-padding-and-packing – John
實際上,你會使用'offsetof'宏(這在所有環境中都不是標準的,但它足夠簡單以查找/實現)。是的,這絕對會根據您使用的編譯器進行更改。 – John