C語言 動態記憶體管理

2021-09-23 07:53:57 字數 907 閱讀 1584

為什麼使用動態記憶體分配

當宣告陣列時,必須用乙個編譯時常量指定陣列的長度。但是,陣列的長度常常在執行時才知道,它所需要的記憶體空間取決於輸入資料,陣列的編譯時開闢空間的方式就不能滿足了。

動態記憶體函式的介紹

malloc

void* malloc (size_t size);

free

void free (void* ptr);

calloc

void* calloc (size_t num, size_t size);

calloc 函式也用來動態記憶體分配。 為 num 個大小為 size 的元素開闢一塊空間,並且把空間的每個位元組初始化為0。

與函式 malloc 的區別只在於 calloc 會在返回位址之前把申請的空間的每個位元組初始化為全0。

#include #include int main()

free(p);

p = null;

return 0;

}

realloc

realloc函式的出現讓動態記憶體管理更加靈活。如果過去申請的空間太小或者太大,那為了合理的使用記憶體,則需要對記憶體的大小做靈活的調整。 realloc 函式就可以做到對動態開闢記憶體大小的調整。

void* realloc (void* ptr, size_t size);

realloc在調整記憶體空間時:

C語言動態記憶體管理

1 概述 動態儲存管理的基本問題是 系統如何按請求分配記憶體,如何 記憶體再利用。提出請求的使用者可能是系統的乙個作業,也可能是程式中的乙個變數。空閒塊 未曾分配的位址連續的記憶體區稱為 空閒塊 占用塊 已分配給使用者使用的位址連續的記憶體區稱為 占用塊 系統剛剛啟動時,整個記憶體可看做乙個大的 空...

C語言動態記憶體管理

c系統的函式庫中提供了了程式動態申請和釋放記憶體儲存塊的庫函式,下面將分別介紹。1 malloc 函式 a 該函式的原型 void malloc size t size b 該函式只有乙個引數,且形參size是無符號整型,該引數代表申請空間的位元組數。c 返回值 如果記憶體池中的可用記憶體滿足需求,...

C語言動態記憶體管理

在說明c語言記憶體管理之前,要知道什麼是記憶體,記憶體我個人認為可以理解為帶有標籤的盒子,所謂的帶標籤的盒子就像我們住的寢室一樣有門牌號,盒子內只能儲存固定型別的資料或變數,就如男生寢室只能住男生一樣。那麼c語言中有多少種盒子呢?有靜態儲存區 動態儲存區 內部暫存器區域。我們通常定義的變數如果沒有特...