2012-12-20 28 views
3

我使用C中的sizeof()運算符它給了我44 bytes.But中的ctime的手冊頁它具有time.then它的大小應該是36它是如何9個INT變量打印的sizeof(結構TM)是給44?結構TM的大小

回答

2

結構TM的glibc的版本有更多的領域...

long tm_gmtoff;   /* Seconds east of UTC */ 
const char *tm_zone;  /* Timezone abbreviation */ 

再次man ctime閱讀..

+0

這是我行missed.Thanks – Radha

2

除了RedX和阿迪爾的非常真實的答案,結構內部的填充也可能導致大小比所有元素的大小的總和。爲了防止這種情況的自定義結構,你可以使用GCC的__attribute__((__packed__))功能。

+2

+1:我敢打賭,一些系統INT大小不是4個字節。 – BigMike

5

http://linux.die.net/man/3/ctime

結構TM的glibc的版本有更多的領域

long tm_gmtoff;   /* Seconds east of UTC */ 
const char *tm_zone;  /* Timezone abbreviation */ 

這就是你額外的字節來自(可能)。