2017-10-08 126 views
1

我有一個課,我將字面實例化數十億。我盡我所能將盡可能少的數據放入其中,並且在編譯爲x64體系結構時將其減少到10個字節:unsigned short intsize_t。當我將鼠標移到sizeof(myclass)(在VS中)時,它會報告16個字節。如果我註釋掉任何一個字段,那麼這個類的大小就是你所期望的,分別是10個字節和2個字節。我可以強制C++類使用最小的空間量進行編譯嗎?

有沒有辦法指示編譯器只爲我的類使用10個字節?

+1

嘗試'#pragma pack' – PaulMcKenzie

+0

謝謝!在一個答案中拋出'#pragma pack(2)',我將其標記爲最佳答案。 – dfoverdx

+0

@dfoverdx使用'pack(1)'而不是2 –

回答

0

#pragma pack可以使您的結構更小。另一方面,它可以使檢索成員數據變得更慢,因爲不能保證字節的對齊。因此編譯器將需要額外的指令來從不同的存儲器位置獲取數據。欲瞭解更多信息,此鏈接有一個優秀的帖子:#pragma pack effect

相關問題