《c语言从入门到精通》看书笔记——第15章 存储管理
生活随笔
收集整理的這篇文章主要介紹了
《c语言从入门到精通》看书笔记——第15章 存储管理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、內存的組織方式
程序被組織成以下4個邏輯段
(1)可執行代碼
(2)靜態數據。可執行代碼和靜態數據存儲在固定的內存位置
(3)動態數據(堆)。程序請求動態分配的內存來自內存池,也就是上面所列舉的堆。
(4)棧。局部數據對象、函數的參數以及調用函數和被調用函數的聯系放在成為棧的內存池中。
堆和棧可以是被所有同時運行的程序共享的操作系統資源,也可以是使用程序獨占的局部資源。
2、堆和棧
(1)堆
在內存的全局存儲空間中,用于程序動態分配和釋放的內存塊稱為自由存儲空間,通常也稱之為堆。
在C程序中,是用malloc和free函數來從堆中動態地分配和釋放內存。
(2)棧
當程序調用函數和聲明局部變量時,系統將自動的分配內存。
棧是一個后進先出的壓入彈出式的數據結構。
94動態管理
(1)malloc函數
void *malloc(unsigned int size);
在stdlib.h頭文件中包含該函數,作用是在內存中動態的分配一塊size大小的內存空間。malloc函數會返回一個指針,該指針指向分配的內存空間,如果出現錯誤,則返回NULL。
注意:使用malloc函數分配的內存空間是在堆中,,而不是在棧中。因此在使用完這塊內存后一定要將其釋放掉,釋放內存空間使用的是free函數。
(2)calloc函數
void *calloc(unsigned n,unsigned size);
使用該函數也要包含stdlib.h頭文件,其功能是在內存中動態的分配n個長度為size的連續內存空間數組。calloc函數會返回一個指針,該指針指向動態分配的連續內存空間地址。當分配空間錯誤時,返回NULL。
(3)realloc函數
void *realloc(void *ptr,size_t size);
使用該函數要包含頭文件stdlib.h,其功能是改變ptr指針指向的空間大小為size大小。返回值是一個指向新地址的指針,如果出現錯誤,則返回NULL。
(4)free函數
void free(void *ptr);
free函數的功能是使用由指針ptr指向的內存區,使部分內存區能被其他變量使用。ptr是最近一次調用calloc或malloc函數時返回的值。free無返回值。
3、內存丟失
在使用malloc等函數分配內存后,要對其使用free函數進行釋放。因為內存不進行釋放會造成內存遺漏,從而可能會導致系統崩潰。
總結
以上是生活随笔為你收集整理的《c语言从入门到精通》看书笔记——第15章 存储管理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《c语言从入门到精通》看书笔记——第14
- 下一篇: 流控思路——多消费者定量生产(第100篇