1.棧是先入后出,
目前創(chuàng)新互聯(lián)建站已為上千余家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)站空間、網(wǎng)站托管、服務(wù)器租用、企業(yè)網(wǎng)站設(shè)計(jì)、臨高網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
2.棧保存了一個(gè)函數(shù)調(diào)用所需的維護(hù)信息,函數(shù)參數(shù),函數(shù)返回地址,局部變量,函數(shù)調(diào)用上下文。沒有棧就沒有函數(shù),沒有局部變量。
3.
棧保存了一個(gè)函數(shù)調(diào)用所需的維護(hù)信息(函數(shù)參數(shù),函數(shù)返回值地址,局部變量,函數(shù)調(diào)用上下文)
4.棧上的數(shù)據(jù)在函數(shù)返回后就會(huì)被釋放掉,無法傳遞到函數(shù)外部
5.堆是程序中一塊巨大的內(nèi)存空間,可由程序自由使用
6.堆中被程序申請使用的內(nèi)存在程序主動(dòng)釋放前將一直有效
7.堆空間通過申請才能獲得
8.系統(tǒng)對堆空間的管理方式(空閑鏈表法,位圖法,對象池法等等)
9.程序靜態(tài)存儲(chǔ)區(qū)隨著程序的運(yùn)行而分配空間,直到程序運(yùn)行結(jié)束
10.在程序的編譯期靜態(tài)存儲(chǔ)區(qū)的大小就已經(jīng)確定
11.程序的靜態(tài)存儲(chǔ)區(qū)主要用于保存程序中的全局變量和靜態(tài)變量
12.與堆棧不同,靜態(tài)存儲(chǔ)區(qū)的信息最終會(huì)保存到可執(zhí)行程序中.
總結(jié):
棧主要用于函數(shù)調(diào)用,堆區(qū)主要用于內(nèi)存的動(dòng)態(tài)申請和歸還,靜態(tài)存儲(chǔ)區(qū)用于保存全局變量和靜態(tài)變量
內(nèi)存布局
1.文件頭——代碼段---數(shù)據(jù)段((定義的數(shù)據(jù)--未定的數(shù)據(jù))--靜態(tài)區(qū)的)
2.堆棧段在程序運(yùn)行后才正式存在,是程序運(yùn)行的基礎(chǔ)
3..bass段存放的是未初始化的全局變量和靜態(tài)變量
4..text段存放的是程序中的可執(zhí)行代碼
6..data段保存的是那些已經(jīng)初始化了的全局變量和靜態(tài)變量
7..rodata段存放程序中的常量值,如字符串常量
8.靜態(tài)存儲(chǔ)區(qū)通常指程序中的.bss和.data段
9.只讀區(qū)通常指程序中的.rodata段
10.局部變量所占空間為棧上空間
11.動(dòng)態(tài)空間為堆中的空間
12.程序可執(zhí)行代碼存放于.text段
scanf不能輸入字符串,輸入字符串用gets,vs為了安全著想可以使用scanf_s指定輸入長度,fgets從文件流中輸入指定的長度。