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