堆(heap)、棧(stack)和靜態存儲區
基本要點:
- 基本數據類型都存放在棧區域(stack)
- 引用數據類型都存放在堆區域(heap)
靜態存儲區:
- 靜態存儲區在程序編譯的時候就已分配好,這塊內存在程序的整個運行期間都存在(主要存放靜態數據、全局數據和常量)
棧和堆:
- 變量都存放在內存中
- 內存給變量開闢了兩塊區域,分別爲棧區域和堆區域
- 棧的特點:開口向上(後進先出),速度快,容量小
- 局部變量的存儲單元都可以在棧上創建,函數執行結束時這些存儲單元自動被釋放
- 堆的特點:速度稍慢,容量比較大
- 堆區域亦稱動態內存分配
- 運行的時候用 malloc 或 new 申請任意大小的內存,程序員負責在適當的時候用 free 或 delete 釋放內存
- 動態內存的生存期由我們決定,如果我們不釋放內存,程序將在最後才釋放掉動態內存
- 良好的編程習慣是:如果某動態內存不再使用,需要將其釋放掉,否則,我們認爲發生了內存泄漏現象。
基本數據類型的存儲:
- 基本數據類型都存儲在棧區域中
- 3 種基本數據類型:
- 整型(通常包括short、int、long)
- 實型,即浮點型數據(包括float、double)(稱爲實型,估計是因爲表示的數據範圍是實數(因爲比起整型,實型還可以表示小數))
- 字符型(char),字符型與ASCII碼一 一對應
引用數據類型的存儲:
- 引用數據類型存儲在堆區域中
- 理解 引用數據類型