內存管理
- 程序:經源碼編譯后的可執行文件。
- 進程:程序加載到內存后開始執行至執行結束的這樣一段時間概念。
- 進程空間圖
stack 棧存儲 容量比較小經常造成溢出
heap 堆存儲 無限大受實際內存的大小和內存是否連續性。
void *malloc(size_t_Size)
if(NULL == p) //常量不可以賦值
{}
一般用
void *memset(void *buffer,int ch,size_t count);
memset (arr,0,40); 初始化malloc;
申請堆內存空間并返回,所申請的空間,自動清零。
void *calloc(size_t nmemb,size_t size);
void *realloc(void *ptr,size_t size);
切記 realloc()只能擴容,不能縮小空間
realloc newPtr ptr 有可能相等,也有可能不相等,只使用realloc的返回指針。
堆內存的特點總結:
1、自申請,自釋放
2、返回判空
free(p) p = NULL;
//記得將釋放的指針置為NULL
3、配對使用