堆和棧的區別

一、預備知識—程序的內存分配  
  一個由c/C++編譯的程序佔用的內存分爲以下幾個部分  
  1、棧區(stack)—       由編譯器自動分配釋放   ,存放函數的參數值,局部變量的值等。其操作方式類似於數據結構中的棧。  
  2、堆區(heap)   —       一般由程序員分配釋放,   若程序員不釋放,程序結束時可能由OS回收   。注意它與數據結構中的堆是兩回事,分配方式類似於鏈表。  
  3、全局區(靜態區)(static)—,全局變量和靜態變量的存儲是放在一塊的,初始化的全局變量和靜態變量在一塊區域,   未初始化的全局變量和未初始化的靜態變量在相鄰的另一塊區域。   -   程序結束後有系統釋放    
  4、文字常量區     —常量字符串就是放在這裏的。   程序結束後由系統釋放  
  5、程序代碼區—存放函數體的二進制代碼。  

二、例子程序 

 

發佈了33 篇原創文章 · 獲贊 6 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章