關於C語言中記憶體的3個問題

2021-07-26 18:30:45 字數 772 閱讀 1428

1.程式為什麼需要記憶體?

電腦程式 = ** + 結果,從巨集觀上理解,**就是動作,而資料被動作加工,最終返回結果。程式是被放在記憶體中執行的,並且需要記憶體來儲存一些臨時變數,因此,對於程式來說,記憶體是程式的立足、生命之地。

2.從硬體、邏輯角度看記憶體?

從硬體角度上,記憶體是乙個硬體器件,由硬體系統提供,根據不同的硬體實現原理,可以把記憶體分為sram,dram(dram有好多代,譬如最早的sdram,到後來的ddr2,ddr2...);從邏輯的角度上,記憶體是一種可以隨機訪問並且讀寫的東西,該東西實際上是由無限多個記憶體單元組成,每個單元有乙個固定的位址叫做記憶體位址。

3.記憶體從哪獲取而來?

程式通過3中方式獲取記憶體:棧(stack)、堆(heap)、資料區(.data)。

c語言中使用棧來儲存區域性變數,棧的入口即出口,按照先進後出filo(first in last out)的規律管理記憶體。當我們在c中定義乙個區域性變數時,譬如int a,編譯器會在棧中分配一段4位元組空間給該變數使用,其背後的實質是:將這4位元組的棧記憶體的記憶體位址和我們定義的區域性變數名a給關聯起來。

堆是獲取記憶體的另一種方式,當需要記憶體容量比較大時,可以使用malloc和free反覆申請使用、釋放;

c語言中初始化為非零的全域性變數和靜態區域性變數(即使用static修飾的區域性變數)獲取記憶體則是通過資料區(.data)。對於未初始化或顯式初始化為0的全域性變數則放在bss段。bss段和.data段沒有本質區別,幾乎可以不用明確去區分這兩種。

關於C語言中記憶體的3個問題

1.程式為什麼需要記憶體?電腦程式 結果,從巨集觀上理解,就是動作,而資料被動作加工,最終返回結果。程式是被放在記憶體中執行的,並且需要記憶體來儲存一些臨時變數,因此,對於程式來說,記憶體是程式的立足 生命之地。2.從硬體 邏輯角度看記憶體?從硬體角度上,記憶體是乙個硬體器件,由硬體系統提供,根據不...

關於C語言中記憶體的3個問題

1.程式為什麼需要記憶體?電腦程式 結果,從巨集觀上理解,就是動作,而資料被動作加工,最終返回結果。程式是被放在記憶體中執行的,並且需要記憶體來儲存一些臨時變數,因此,對於程式來說,記憶體是程式的立足 生命之地。2.從硬體 邏輯角度看記憶體?從硬體角度上,記憶體是乙個硬體器件,由硬體系統提供,根據不...

C語言中關於記憶體的分配

在編寫c語言程式時,我們的記憶體儲存在4塊區域,分別為棧 stack 堆 heap 資料區 data和.bss區域 常量區 唯讀 棧 棧區域中存放的是區域性變數,函式定義的形參,和auto修飾的自動變數。特點 1 棧空間是os 作業系統 自動分配和 程式設計師不用去管 2 棧空間可以被反覆使用 3 ...