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開始的,第二行是全域性棧區所佔...