free函數的用法釋放ptr指向的存儲空間。被釋放的空間通常被送入可用存儲區(qū)池,以后可在調用malloc、realloc以及calloc函數來再分配。
站在用戶的角度思考問題,與客戶深入溝通,找到陽城網站設計與陽城網站推廣的解決方案,憑借多年的經驗,讓設計與互聯網技術結合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都做網站、網站設計、企業(yè)官網、英文網站、手機端網站、網站推廣、域名注冊、虛擬空間、企業(yè)郵箱。業(yè)務覆蓋陽城地區(qū)。
free?不管指針指向多大的空間,均可以正確地進行釋放,這一點釋放比?delete/delete []?要方便。如在分配指針時,用的是new或new[]。
在釋放內存時,并不能圖方便而使用free來釋放。反過來,用malloc?分配的內存,也不能用delete/delete[]來釋放。
舉例:
int* p = (int *) malloc(4);
*p = 100;
free(p); //釋放?p?所指的內存空間
或者:
int* p = (int *) malloc ( sizeof(int) * 100 ); //分配可以放得下100個整數的內存空間。
……
free(p);
擴展資料
1、free是和malloc、realloc或者calloc函數成對出現的,來保證動態(tài)分配的空間及時釋放。
2、一塊動態(tài)申請的內存用free釋放一次就夠。
C++ 用法一樣。
動態(tài)數組,第一次分配 必須用 malloc ! 以后的重新分配/再分配 就用 realloc,可以多次,根據需要增加單元。
int *a;
a = (int *) malloc(sizeof(int) * ARR_SIZE); // 第一次分配
。。。
if (i = ARR_SIZE-1) {
ARR_SIZE=ARR_SIZE+100; // 增加100個
realloc(a,sizeof(int) * ARR_SIZE); // 再分配,老單元里的數值不會被破壞
}
動態(tài)內存分配即分配內存大小在運行時才確定,一般在堆中分配。
C語言動態(tài)內存分配相關的函數如下幾個:malloc、calloc、realloc、free;
malloc函數的使用比較直接,一個成功的malloc調用返回分配的size大小的內存的指針。失敗時返回NULL并將錯誤代碼置為ENOMEM。
calloc函數可以分配nr個size大小的內存空間,一般用于一組struct結構體的分配。
realloc函數將ptr指向的內存空間重新分配大小為size并返回新的內存首地址。
free函數釋放前三個函數申請的內存空間,所以,使用前三個分配函數分配的內存一定要free掉。