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