當前位置:首頁 » 編程語言 » c語言free

c語言free

發布時間: 2022-01-11 05:37:14

A. c語言free的作用

malloc 和 free 是在系統的棧上分配空間。
malloc是申請,意思就是告訴系統,我要用一塊RAM,給我用了別人就不要用了。
free是釋放,意思是告訴系統,給我的這塊RAM我用完了,不再用了,系統可以把它干別的了。

free之後,系統還沒有拿這塊RAM干別的事之前,這塊RAM的內容可能是不會變的,依然可以讀出原來的內容,因為你的指針a還是指向這塊RAM。但要注意,這塊RAM已經不屬於你了,讀一下內容無所謂,如果往裡面寫就很危險了。

B. C語言:關於FREE()函數的用法

定義的指針不佔內存,指針只是一個指向內存(可以由malloc開辟)的東西,free釋放的是指針所指向已經開辟好的內存空間,用free釋放。不然容易造成內存泄漏!

C. C語言在哪些情況下需要free

當內存是用malloc申請的時候
使用後,需要free
其它情況一般不需要free
不過需要注意的是,有些庫函數 比如strp, 返回的是malloc的一個空間,用後也需要free

D. c語言中 free的用法~

還可以參考
http://hi..com/nidil/blog/item/e205770986fe24af2fddd4d7.html
=============
釋放內存 free 函數
需要包含頭文件(和 malloc 一樣):

#include



#include

函數聲明:

void free(void *block);

即: void free(指針變數);

之所以把形參中的指針聲明為 void* ,是因為free必須可以釋放任意類型的指針,而任意類型的指針都可以轉換為void *。

舉例:

int* p = (int *) malloc(4);

*p = 100;

free(p); //釋放 p 所指的內存空間

或者:

int* p = (int *) malloc ( sizeof(int) * 100 ); //分配可以放得下100個整數的內存空間。

……

free(p);

free 不管你的指針指向多大的空間,均可以正確地進行釋放,這一點釋放比 delete/delete [] 要方便。不過,必須注意,如果你在分配指針時,用的是new或new[],那麼抱歉,當你在釋放內存時,你並不能圖方便而使用free來釋放。反過來,你用malloc 分配的內存,也不能用delete/delete[] 來釋放。一句話,new/delete、new[]/delete[]、malloc/free 三對均需配套使用,不可混用!

int* p = new int[100];

... ...

free(p); //ERROR! p 是由new 所得。

E. C語言 free()函數的使用規則

free(a)和free(b)均可以,但是只能free一次,不能free(a)之後又free(b),那樣會出錯的。
free(c)也不行,因為c的位置沒有保存malloc時的輔助信息(用於free)

第二個問題:
free(a)就是將鏈表中這一個節點釋放了,a->next指向的內存不會釋放,但是整個a包括a->next佔用的空間都已釋放,a->next不能再用了。

F. c語言free的作用

你的程序太簡單, free之後沒有其它操作,所以那塊內存沒有被寫入其它內容.
free只是標記一下某塊內存可用,但並不重寫內容.
類似於刪除文件, 只是打上標記, 內容還在硬碟上,如果沒有被改寫,還是可以恢復的.

G. C語言 free();

可以。free 後,數組存放單元沒了,但指針還在,可以重新分配單元再用,再free.
不 free 也可以用 realloc 增減存放單元。

H. C語言中free的用法

for循環一結束,局部變數ps的所申請的空間就會釋放

I. C語言中free函數的用法

free函數的用法釋放ptr指向的存儲空間。被釋放的空間通常被送入可用存儲區池,以後可在調用malloc、realloc以及calloc函數來再分配。

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);

(9)c語言free擴展閱讀

1、free是和malloc、realloc或者calloc函數成對出現的,來保證動態分配的空間及時釋放。

2、一塊動態申請的內存用free釋放一次就夠。

J. C語言的free()函數

double* p;
p=calloc(n*sizeof(double));
free(p);
誰告訴你參數是void類型啊,在c語言中void指針可以轉換成指向任何類型的指針
你可以把calloc後返回的p指針理解成指向這一段內存,也可以理解成指向第一個元素
調用free()時p指針指向的是這一段內存,當然就可以釋放了

熱點內容
安卓手機怎麼假位置共享 發布:2024-11-10 14:26:21 瀏覽:994
vmwaretoolslinux 發布:2024-11-10 14:12:02 瀏覽:185
php視頻百度雲 發布:2024-11-10 14:05:19 瀏覽:714
買車要哪些配置呢 發布:2024-11-10 14:04:42 瀏覽:171
修圖用什麼配置的電腦配置 發布:2024-11-10 14:03:09 瀏覽:19
如何知道自己的九游賬號密碼 發布:2024-11-10 14:03:08 瀏覽:764
大數據的存儲和管理 發布:2024-11-10 14:00:59 瀏覽:396
upyun上傳文件 發布:2024-11-10 14:00:12 瀏覽:857
php之道 發布:2024-11-10 13:50:45 瀏覽:791
n的階乘c語言程序 發布:2024-11-10 13:50:45 瀏覽:513