簡介數據結構
咱們程序運行的時候都是放在內存裏的、根據靜態、成員函數、代碼段、對象、等等、放在不一樣的內存分塊裏、大概分爲5塊架構
1 棧框架
2 堆函數
3 BSS段-全局區-(靜態區)優化
4 代碼段 spa
5 數據段.net
棧3d
存放局部變量、臨時變量、聲明、返回值、指向堆對象的地址(指針)、總之存放一些小的東西、當不須要時候、棧會自動清除、好比一個加法方法裏面、聲明瞭兩個int並賦值、這兩個就是放在棧裏面、類裏面的8個基本變量常量類型、聲明賦值之後都會在棧裏、其餘的放在堆裏。注:(byte、short、int、long、char、float、double、boolean)(據說跟數據結構的棧很像、可是我學數據結構的時候其實就想到了這個棧)指針
堆code
存放new出來的對象、棧裏面全部對象都是在堆裏面有指向的、假如棧裏指向堆的指針被刪除、堆裏的對象也要釋放(C++須要手動釋放)、固然咱們如今好面向對象程序都有'垃圾回收機制'、會按期的把堆裏沒用的對象清除出去。
代碼段
存放程序執行代碼的一塊內存區域、裏面是二進制的代碼、內存區域一般屬於只讀, 某些架構也容許代碼段爲可寫,其實就是存放代碼框架、或者說函數體、代碼體的地方。
BSS段-全局區-(靜態區)
上邊是三個名字- -、找到的、差很少就那個意思、這個BSS段、就是存放爲初始化的全局變量與未初始化的靜態變量。
數據段
BSS段的是未初始化的、這個就像接他的班、數據段存放已初始化的全局變量和靜態變量。
Data
BSS+數據段、包含這兩個區段的叫數據區……其實我也不是很懂、大概就是BSS+數據段就叫Data區、就像 火燒+肉=火燒夾肉……
思惟導圖
例子程序
這是一個前輩寫的,很是詳細
原文連接:連接