c語言基礎 記憶體管理

2022-03-01 15:54:29 字數 632 閱讀 5082

(1) malloc()、calloc()

分配新的記憶體區域。calloc 在動態分配完記憶體後,自動初始化該記憶體空間為零,而 malloc 不初始化,裡邊資料是隨機的垃圾資料。

(2) realloc()

調整已分配的記憶體區域。先判斷當前的指標是否有足夠的連續空間,如果有,擴大mem_address指向的位址,並且將mem_address返回,如果空間不夠,先按照newsize指定的大小分配空間,將原有資料從頭到尾拷貝到新分配的記憶體區域,而後釋放原來mem_address所指記憶體區域,同時返回新分配的記憶體區域的首位址。即重新分配儲存器塊的位址。

分配記憶體函式都返回 void 指標,這種指標被稱為無型別指標(typeless pointer)。返回指標的值是所分配記憶體區域中第乙個位元組的位址,當分配記憶體失敗時,返回空指標。

(3) free()

釋放已分配的記憶體區域。

c語言記憶體管理

在c語言中,根據資料在記憶體中存在的時間 生存期 不同,將記憶體空間分為三個區 1.程式區 用於儲存程式的 即程式的二進位制 存放函式體的二進位制 2.靜態儲存區 用於儲存全域性變數和靜態變數,這些變數的空間在程式編譯時就已經分配好了.全域性變數和靜態變數的儲存是放在一塊的,初始化的全域性變數和靜態...

C語言 記憶體管理

對於任何的作業系統來說,記憶體都是很寶貴的乙個地方。所以,對於程式語言來說,記憶體管理就顯得尤為重要。c語言 在記憶體中執行的時候,我們大致將占用的記憶體分為4塊區域 區 靜態區 棧區 堆區。這4各區域,有著各自的特點,他們也儲存著我們的程式在執行中的不同型別的資料。弄明白了這4個區域的資料儲存特點...

C語言 記憶體管理

記憶體管理一號傳送門 記憶體管理二號傳送門 對於乙個c語言程式而言,記憶體空間主要由五個部分組成 段 text 資料段 data bss段 bss 堆和棧組成,其中 段,資料段和bss段是編譯的時候由編譯器分配的,而堆和棧是程式執行的時候由系統分配的。在上圖中,由編譯器分配的位址空間都是在連線的時候...