3

sizeof(struct tm)をCでsizeof()演算子を使用して出力すると、44バイトになります。しかし、ctimeのmanページには、時間に対して9つのint変数があります。サイズは36になります。44はどのように与えられますか?

4

3 に答える 3

5

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

struct tm の glibc バージョンには追加のフィールドがあります

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

それが余分なバイトの由来です(おそらく)。

于 2012-12-20T09:49:04.917 に答える
2

RedX と Adeel の真の答えとは別に、構造内のパディングは、すべての要素のサイズの合計よりも大きなサイズになる可能性もあります。カスタム構造でこれを防ぐには、GCC 機能を使用でき__attribute__((__packed__))ます。

于 2012-12-20T09:47:30.783 に答える
2

struct tm の glibc バージョンには追加のフィールドがあります...

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

もう一度読んでman ctime..

于 2012-12-20T09:49:53.033 に答える