C_language_renew06

內存管理

  • 程序:經源碼編譯后的可執行文件。
  • 進程:程序加載到內存后開始執行至執行結束的這樣一段時間概念。
  • 進程空間圖
    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、配對使用

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容