對動態內存申請中的malloc free collocrelloc的簡單認識

動態內存中用到的幾個函數

malloc數組

freeide

relloc函數

calloc指針

malloc

```clike斜體樣式
void* malloc(size_t size);code

>**申請一快連續可用空間,並返回指向這塊空間的地址。
若是開闢成功,則返回一個指向開闢好空間的指針。
若是開闢失敗,則返回一個NULL指針,所以malloc的返回值必定要作檢查。
返回值的類型是 void* ,因此malloc函數並不知道開闢空間的類型,具體在使用的時候使用者本身來決定。
若是參數 size 爲0,malloc的行爲是標準是未定義的,取決於編譯器。**

## free

```clike
void free(void* p)

用來釋放動態開闢的內存。
若是參數 ptr 指向的空間不是動態開闢的,那free函數的行爲是未定義的。
若是參數 ptr 是NULL指針,則函數什麼事都不作。
內存

calloc

void* calloc(size_t num,size_t size);

開闢num個size大小的空間,並初始化爲0;
通常也能夠用malloc申請好後,用memset。
編譯器

void* memset(void* buffer,int c,int count)
/buffer:爲指針或是數組,
/c:是賦給buffer的值,
/count:是buffer的長度.

realloc

void* realooc(void* ptr,zize_t size);

對原有空間進行從新申請,可變大小,
兩種狀況:後面空間足夠大,不足夠大。
見下一篇博客
博客

attention:

1.對於申請動態空間必定要是釋放。
2.不能屢次釋放
3.不能越界釋放或操做。注意p++的使用
4.不能對空指針進行操做
5.不能只釋放一部分
相關文章
相關標籤/搜索