#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 棧區 在執行函式時,函式內區域性變數的儲存單元都可以在棧上建立,函式執行結束後這些儲存單元...