分配記憶體空間

2021-04-18 03:07:10 字數 1105 閱讀 5025

void *calloc(size_t nobj, size_t size);

分配足夠的記憶體給nobj個大小為size的物件組成的陣列, 並返回指向所分配區域的第乙個位元組的指標;

若記憶體不夠,則返回null. 該空間的初始化大小為0位元組.

char*p 

=(char

*) calloc(

100, 

sizeof

(char

));

void *malloc(size_t size);

分配足夠的記憶體給大小為size的物件, 並返回指向所分配區域的第乙個位元組的指標;

若記憶體不夠,則返回null. 不對分配的空間進行初始化.

char*p 

=(char

*) malloc(

sizeof

(char

));

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

將p所指向的物件的大小改為size個位元組.

如果新分配的記憶體比原記憶體大, 那麼原記憶體的內容保持不變, 增加的空間不進行初始化.

如果新分配的記憶體比原記憶體小, 那麼新記憶體保持原記憶體的內容, 增加的空間不進行初始化.

返回指向新分配空間的指標; 若記憶體不夠,則返回null, 原p指向的記憶體區不變.

char*p 

=(char

*) malloc(

sizeof

(char

));p=(

char

*) realloc(p, 

256);

要是對記憶體空間不夠,原p指向的空間因為p=null後而丟失

防止記憶體洩露:

char *p,*q;

p = (char *) malloc(sizeof(char));

q= (char *) realloc(p, 256);

if (q==null)

return -1;

p=q;

void free(void *p);

釋放p所指向的記憶體空間; 當p為null時, 不起作用.

p必先呼叫calloc, malloc或realloc.

記憶體空間與分配

1 記憶體分配錯誤 動態記憶體分配錯誤有兩種基本型別 記憶體錯誤和記憶體洩漏。1 記憶體錯誤 當乙個指標或者該指標所指向的記憶體單元成為無效單元,或者記憶體中分配的資料結構被破壞時,就會造成記憶體錯誤。指標未被初始化,指標被初始化為乙個無效位址,指標被不小心錯誤地修改,在與指標相關聯的記憶體區域被釋...

C C 分配記憶體空間

方法 c malloc calloc realloc free c new delete 函式原型 請求成功返回空間首位址,失敗返回 null include void malloc size t size 分配size位元組的連續記憶體,不負責初始化,使用memset初始化。void calloc...

Linux程式記憶體空間分配

先來看一段簡單 include include int main 執行結果 這時另開乙個終端,輸入cat proc 10073 maps,出現如下顯示 實際上,第一行是 區所佔的記憶體空間,804800 804900,實際上幾乎所有的linux程式 段都是從804800開始的,第二行是全域性棧區所佔...