我有這樣的結構在我的代碼:的sizeof給出意想不到的結果爲我的結構
struct BlockDescriptor
{
struct BlockDescriptor * pNext;
bool _isFree;
};
和我傾向於相信它的大小是4 + 1 = 5(4用於指針和1
爲bool
) ,但由於某種原因,sizeof(struct BlockDescriptor)
返回8!有人能告訴我爲什麼嗎?
是否因爲打包問題導致5四捨五入爲4的倍數(因爲大多數計算機最適合使用32位),並且是否有某種方法可以強制它使用真實大小(如果這樣其實真正的大小)?
「pNext」和「_isFree」之間的填充。您可以通過編譯器特定的機制強制執行「打包」。 – cnicutar 2013-03-17 22:02:04
在struct定義之前放置#pragma pack(1)。 – 2013-03-17 22:06:19
爲什麼'sizeof(struct BlockDescriptor)'返回什麼對你很重要? – 2013-03-17 22:08:15