由上圖中可以知道進程地址空間中最頂部的段是棧,代碼中調(diào)用函數(shù)、定義局部變量(但不包含static修飾的變量)或聲明的類的實例等等都要使用棧空間,當函數(shù)執(zhí)行完(也就是程序執(zhí)行超過了這個函數(shù)的作用范圍的時候),操作系統(tǒng)會把該函數(shù)在棧中存放的數(shù)據(jù)出棧,也就是函數(shù)執(zhí)行完需要return的時候系統(tǒng)會自己釋放內(nèi)存。但是如果不斷的向棧中壓入數(shù)據(jù),達到最大的??臻g大小的話就會棧溢出(stack overflow),這時候程序運行就會出現(xiàn)段錯誤(Segmentation Fault)。