c/c++堆棧分布及其設置方法
一個由C/C++編譯的程序占用的內存分為以下幾個部分
1、棧區(qū)(stack)— 由編譯器自動分配釋放 ,存放函數的參數名,局部變量的名等。其操作方式類似于數據結構中的棧。
2、堆區(qū)(heap)— 由程序員分配釋放, 若程序員不釋放,程序結束時可能由OS回收。注意它與數據結構中的堆是兩回事,分配方式倒是類似于鏈表。
3、全局區(qū)(靜態(tài)區(qū))(static)—全局變量和靜態(tài)變量的存儲是放在一塊的,初始化的全局變量和靜態(tài)變量在一塊區(qū)域, 未初始化的全局變量和未初始化的靜態(tài)變量在相鄰的另一塊區(qū)域。程序結束后由系統(tǒng)釋放。
4、文字常量區(qū)—常量字符串就是放在這里的,程序結束后由系統(tǒng)釋放 。
5、程序代碼區(qū)— 存放函數體的二進制代碼。
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)化成一個地方。
相關文章
iOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果
這篇文章主要介紹了iOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果的相關資料,需要的朋友可以參考下2016-03-03iOS在頁面銷毀時如何優(yōu)雅的cancel網絡請求詳解
這篇文章主要給大家介紹了關于iOS在頁面銷毀時如何優(yōu)雅的cancel網絡請求的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2018-05-05