C程式設計之動態管理與記憶體丟失

2021-09-16 23:02:45 字數 1272 閱讀 5489

#include

void

*malloc

(void

*ptr,size_t size)

;

int

* pint;

pant=

(int*)

malloc

(sizeof

(int))

;

函式原型如下:

#include

void

*calloc

(void

*ptr,size_t size)

;

該函式的功能在於在記憶體中動態分配n個長度為size的連續記憶體空間。

int

* parray;

parray=

(int*)

calloc(4

,sizeof

(int))

;

函式原型如下:

#include

void

*realloc

(void

*ptr,size_t size)

;

realloc函式的功能是改變ptr指標指向的空間的大小,例如改變乙個實型空間大小為整型。

fdouble=

(double*)

realloc

(sizeof

(double))

;int

=realloc

(fdouble,

sizeof

(int))

;

使用malloc分配記憶體後,需要使用free函式進行釋放。不釋放記憶體可能造成記憶體洩漏,導致程式崩潰。使用malloc後對應的寫出free函式釋放記憶體是一種良好的程式設計習慣。並能在一定程度上體現程式優美的風格和健壯性。

有時候經常出現記憶體丟失的情況,如:

pold=

(int*)

malloc

(sizeof

(int))

;pnew=

(int*)

malloc

(sizeof

(int))

;pold=pnew;

free

(pold)

;//實際上釋放了pold指向的pnew的記憶體空間,而原先分配給pold的記憶體則沒有得到釋放

C 程式設計之記憶體管理(再談)

在 常見的記憶體錯誤及其對策 c 中,記憶體分成 5 個區,他們分別是堆 棧 自由儲存區 全域性 靜態儲存區和常量儲存區。管理方式 對於棧來講,是由編譯器自動管理,無需我們手工控制 對於堆來說,釋放工作由程式設計師控制,容易產生 memory leak。空間大小 一般來講在 32 位系統下,堆記憶體...

C C 程式設計之記憶體管理

1 從 全域性 靜態儲存區域分配 內存在程式編譯的時候就已經分配好,這塊內存在程式的整個執行期間都存在,例如,全域性變數,靜態變數。2 常量儲存區 儲存程式中的常量。3 棧區 在執行函式時,函式內區域性變數的儲存單元都可以在棧上建立,函式執行結束後這些儲存單元自動被釋放。棧記憶體分配運算內置於處理器...

C C 程式設計之記憶體管理

記憶體分配方式 c語言中記憶體分配方式 1 從 全域性 靜態儲存區域分配 內存在程式編譯的時候就已經分配好,這塊內存在程式的整個執行期間都存在,例如,全域性變數,靜態變數。2 常量儲存區 儲存程式中的常量。3 棧區 在執行函式時,函式內區域性變數的儲存單元都可以在棧上建立,函式執行結束後這些儲存單元...