bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

關于C++中內存分區的知識-創新互聯

在c++中許多人搞不清楚棧區和堆區的問題,不了解堆區或者棧區內存什么時候釋放,經過我的學習,簡單給大家講解下:

創新互聯主營將樂網站建設的網絡公司,主營網站建設方案,成都App制作,將樂h5小程序制作搭建,將樂網站營銷推廣歡迎將樂等地區企業咨詢

C++程序在執行時,將內存大方向劃分為4個區域

  • 代碼區:存放函數體的二進制代碼,由操作系統進行管理的

  • 全局區:存放全局變量和靜態變量以及常量

  • 棧區:由編譯器自動分配釋放, 存放函數的參數值,局部變量等

  • 堆區:由程序員分配和釋放,若程序員不釋放,程序結束時由操作系統回收

所以,只要我們分清楚全局變量和局部變量,就能明白全局區和棧區的區別,

分清楚堆區和棧區定義,就能明白堆區和棧區的區別。

一:全局區和棧區的區別:

①函數體外的是全局變量,內存在全局區,函數體內的是局部變量,內存在棧區

②變量前加入static,就都是靜態變量,內存在全局區

③const修飾的是常量,但常量分局部常量和全局常量。

④局部變量在函數中,不能返回其本身的地址(因為局部變量儲存在棧區上,在這個函數執行完后,會有編譯器釋放內存,意味著這個地址已經不存在了)

二:堆區和棧區的區別:

①堆區是由程序員自己設置和刪除的,主要用的關鍵字new,利用new來開辟內存空間,創建指針變量,不過指針本質上是局部變量地址在棧區上,保存的數據值放在堆區上。用完之后,要通過關鍵字delete來釋放內存空間。

int* fun()
{
	int* a = new int(10);
	return a;
}

(利用new創建一個指針變量,并存放一個數值,這個指針是指向int類型,通過創建指針a來接受這個指針,并返回這個指針對象(因為返回的是指向int類型的指針,所以用int * 進行接受))

這里面所有的指針都是指的是地址,如果想知道里面的數值,需要解引用

int *p = fun();

cout<< *p<< endl;

(上面代碼的意思是p是一個指針變量,表示的是地址,利用*p進行解引用,表示的是數值)

如果后續不使用這個指針變量,就利用關鍵字delete進行釋放內存

delete p

你是否還在尋找穩定的海外服務器提供商?創新互聯www.cdcxhl.cn海外機房具備T級流量清洗系統配攻擊溯源,準確流量調度確保服務器高可用性,企業級服務器適合批量采購,新人活動首月15元起,快前往官網查看詳情吧

網站標題:關于C++中內存分區的知識-創新互聯
分享鏈接:http://vcdvsql.cn/article34/phhpe.html

成都網站建設公司_創新互聯,為您提供Google標簽優化電子商務企業網站制作動態網站云服務器

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都定制網站網頁設計