c/c++堆棧分布及其設(shè)置方法
一個由C/C++編譯的程序占用的內(nèi)存分為以下幾個部分
1、棧區(qū)(stack)— 由編譯器自動分配釋放 ,存放函數(shù)的參數(shù)名,局部變量的名等。其操作方式類似于數(shù)據(jù)結(jié)構(gòu)中的棧。
2、堆區(qū)(heap)— 由程序員分配釋放, 若程序員不釋放,程序結(jié)束時可能由OS回收。注意它與數(shù)據(jù)結(jié)構(gòu)中的堆是兩回事,分配方式倒是類似于鏈表。
3、全局區(qū)(靜態(tài)區(qū))(static)—全局變量和靜態(tài)變量的存儲是放在一塊的,初始化的全局變量和靜態(tài)變量在一塊區(qū)域, 未初始化的全局變量和未初始化的靜態(tài)變量在相鄰的另一塊區(qū)域。程序結(jié)束后由系統(tǒng)釋放。
4、文字常量區(qū)—常量字符串就是放在這里的,程序結(jié)束后由系統(tǒng)釋放 。
5、程序代碼區(qū)— 存放函數(shù)體的二進(jìn)制代碼。
int a = 0;//全局初始化區(qū)
char*p1;//全局未初始化區(qū)
main()
{
intb;//棧
chars[] = "abc";//棧
char*p2;//棧
char*p3 = "123456";//123456\0在常量區(qū),p3在棧上。
static int c =0;//全局(靜態(tài))初始化區(qū)
p1 = (char*)malloc(10);
p2 = (char*)malloc(20);//分配得來的10和20字節(jié)的區(qū)域就在堆區(qū)。
}
strcpy(p1, "123456"); 123456\0放在常量區(qū),編譯器可能會將它與p3所指向的”123456"優(yōu)化成一個地方。
相關(guān)文章
iOS中長條藍(lán)色按鈕(button)實(shí)現(xiàn)代碼
本文通過實(shí)例代碼給大家介紹了iOS中長條藍(lán)色按鈕(button)實(shí)現(xiàn)方法,代碼簡單易懂,非常不錯,具有參考借鑒價(jià)值,需要的朋友參考下吧2017-08-08iOS自定義UICollectionViewFlowLayout實(shí)現(xiàn)圖片瀏覽效果
這篇文章主要介紹了iOS自定義UICollectionViewFlowLayout實(shí)現(xiàn)圖片瀏覽效果的相關(guān)資料,需要的朋友可以參考下2016-03-03Objective-C實(shí)現(xiàn)自定義的半透明導(dǎo)航
這篇文章主要為大家詳細(xì)介紹了Objective-C實(shí)現(xiàn)自定義的半透明導(dǎo)航的相關(guān)資料,需要的朋友可以參考下2016-05-05iOS中的UISearchBar搜索框組件基礎(chǔ)使用指南
iOS開發(fā)套件中自帶的UISearchBar搜索框我們平時經(jīng)??梢杂玫?我們可以在默認(rèn)的基礎(chǔ)上修改文字顏色、背景顏色和背景圖片等,這里我們稍微總結(jié)一下iOS中的UISearchBar搜索框組件基礎(chǔ)使用指南.2016-05-05iOS在頁面銷毀時如何優(yōu)雅的cancel網(wǎng)絡(luò)請求詳解
這篇文章主要給大家介紹了關(guān)于iOS在頁面銷毀時如何優(yōu)雅的cancel網(wǎng)絡(luò)請求的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-05-05