2012-10-22 72 views
1

這幾天我正在閱讀關於堆棧溢出的文檔,並發現一個句子讓我困惑。C上的局部變量存儲在內存中

推送到堆棧上的項目可以,順便說一句,只能放在字邊界, 這意味着地址必須是字長的倍數。因此,如果程序 包含僅使用一個字節的局部變量,則儘管如此,仍使用一個完整的字來存儲 這個變量!

這是否意味着存儲在32位機器堆棧中的短整型(2字節)局部變量將浪費2個字節,因爲系統將分配一個完整的單詞來存儲?

回答

4

是的,就是這個意思。這取決於系統的實施和處理實施,但它有相當常見的字對齊。

+0

那麼這意味着我們不能通過使用小於32位的數據類型來節省空間? – JustForTest

+0

@JustForTest取決於你的系統,在許多情況下 - 是的,這就是它的意思。儘管可以使用「打包」結構,但在直接訪問這些數據時要小心。 – littleadv

相關問題