C語言中malloc()和free()函數的理解
C語言是一門通用計算機編程語言,應用廣泛。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。以下僅供參考!
C++ 中malloc()和free()函數的理解
關於malloc和free這兩個函數,malloc的用法示例:int *p=(int *)malloc(2*sizeof(int)); 它表示在堆中開闢一塊大小爲2*sizeof(int)的一塊內存空間,p指向這塊內存空間的起始地址,malloc前面的(int*)表示這塊空間用來存儲int型數組。開闢了這塊空間後,可以修改這個空間中的值,例如爲*p,*(p+1)做賦值操作,如果再次使用malloc函數,例如再寫一個 int *q=(int *)malloc(2*sizeof(int)); 此時開闢的.以q爲起始地址長度爲2*sizeof(int)的空間是不會覆蓋p所指向的空間的。但是,如果在int *q=(int *)malloc(2*sizeof(int));之前寫一個free(p),那麼,q所指向的空間則有可能覆蓋p指向的空間。所謂的free(p)操作,其實是修改p所指向的空間的標記值,讓其可以被覆蓋。儘管執行了free(p),p仍就指向以前的起始地址,依舊可以對*p,*(p+1)賦值,並且可訪問他們(例如輸出)。
代碼如下:
1234567891011121314 | int main(){
int *p=( int *) malloc (2* sizeof ( int ));
free (p);
*p=1;
*(p+1)=2;
cout<<p<<endl<<(p+1);
cout<<endl;
cout<<*p<<endl<<*(p+1);
int *q=( int *) malloc (2* sizeof ( int ));
cout<<endl<<q<<endl<<(q+1);
cout<<endl<<*q<<endl<<*(q+1);
return 1; } |
運行結果:
補充:
int *p=(int *)malloc(2*sizeof(int)); 若要釋放這段空間,必須free(p),只是單單想釋放部分空間,例如free(p+1)是不允許的。
相關文章
-
如何運用C語言malloc和free函數
在女兒成長的歲月裏,李淑玲給予了更多的關愛。兒子出生後,我出門時總是抱兩個;給兒子買來的小車,兒子卻沒騎幾次,反而天天馱着女兒走動。李淑玲無微不至的照顧使女兒在11歲之前學會了自己趴着喝水、趴着吃飯,自己在便盆裏拉 -
淺談如何運用C語言malloc和free函數
C語言的應用範圍廣泛,具備很強的數據處理能力,不僅僅是在軟件開發上,而且各類科研都需要用到C語言,適於編寫系統軟件,三維,二維圖形和動畫,具體應用比如單片機以及嵌入式系統開發。今天,小編爲大家搜索整理了如何運用C語言mal -
malloc()和free()函數區別
一、malloc()和free()的基本概念以及基本用法:1、函數原型及說明:void *malloc(long NumBytes):該函數分配了NumBytes個字節,並返回了指向這塊內存的指針。如果分配失敗,則返回一個空指針(NULL)。關於分配失敗的原因,應 -
Modern Technology Makes Life More Conv英語六級作文
mode technology makes life more convenient; tools are the milestores of the technology as well as human being s progress.men used to cut trees with hand saw. but now, by using electronic saw they can -
Choice of large enterprises or small英語四級作文
無論在學習、工作或是生活中,大家都跟作文打過交道吧,作文是由文字組成,經過人的思想考慮,通過語言組織來表達一個主題意義的文體。怎麼寫作文才能避免踩雷呢?以下是小編精心整理的手拉手作文,歡迎大家分享。手拉手作文1“ -
The colours of Miracle高中英語作文
many people think that miracle is something that seldom happens; it’s something that ordinary people can’t achieve. they admire michael jordan, the greatest basketball player in the world by now; or -
Oracle認證:OracleTRUNC函數詳解
C 函數Oracle TRUNC函數可以截取數字和日期類型: C截取數字TRUNC(number)函數返回n1截取到n2位小數。如果省略n2時,則n1截取到0位置(即截取所有小數位)。如果n2爲負數時,表示截取小數點左邊的n2位,被截取部分記爲0 -
高中生優秀英語作文:Have a break away from electronics
回顧在中醫科的實習工作,感觸很深,收穫頗豐。談談一些心得體會。本文是中醫科的實習心得體會,歡迎閱讀。中醫科的實習心得體會一:在中醫科的實習即將結束,在這一個多月的實習期間,我遵紀守法,遵守醫院及醫院各科室的各項規章 -
Perseverance will make you successful英語作文
As is known to all: success lies in perseverance. nothing can make people much more excitation than success. but you must suffer all kinds of hardships throughout your life before you succeed. everyon -
在Excel中使用AMORDEGRC函數的方法
在學習、工作乃至生活中,大家都寫過作文吧,作文根據寫作時限的不同可以分爲限時作文和非限時作文。作文的注意事項有許多,你確定會寫嗎?下面是小編收集整理的家的溫暖作文,歡迎大家分享。家的溫暖作文1我從小就很好動,所以