共用體所占內存大小問題
#include
union data{ ? ?int a; ? ?char b; ? ?char c[5]; ? ?int d; }; int main() { ? ?union data dd = {10}; ? ?dd.b = 'a'; ? ?printf("___SIZE____ %lu\n", sizeof(dd)); } //這里我輸出共用體的大小是8而不是5 是不是共用體內存大小也是要對齊的?#include
union data{ ? ?int a; ? ?char b; ? ?char c[5]; ? ?int d; }; int main() { ? ?union data dd = {10}; ? ?dd.b = 'a'; ? ?printf("___SIZE____ %lu\n", sizeof(dd)); } //這里我輸出共用體的大小是8而不是5 是不是共用體內存大小也是要對齊的?2017-05-08
舉報
2017-05-08
c++有一個對齊機制,申請的內存應該是某一數的整數倍,在這里是4,所以只能是8
2017-05-08
是,這點和結構體類似。