關於C++的內存處理,可分為三大塊,分別是:
(一)內存管理機制
(二)內存泄露處理
(三)內存回收機制
這篇文章將就(一)內存管理機制 進行深入探討,如有錯誤歡迎大家指正。
C++的內存管理也可細分為
1. 程序內存布局
2. 內存的分配方式
3. 常見內存錯誤及對策
----------------------------------------------------------------------------
一. 程序內存布局
查了相關資料,明白了一點: memory layout of C++/C program is mostly dependent on the Operating System
So it's an opening question !
即便如此,當清楚C++程序的內存布局后,我們對變量的生存期、內存的管理,將會有更深刻的認識。
下面先概括介紹C++程序內存布局,再分別以windows和linux為示例。
1. C++程序內存布局
對於分段式內存而言,C++程序所涉及的內存區有:代碼段、數據段、堆棧。(見圖)
下面來依次分析C++程序中各個元素所對應的內存位置吧~
程序代碼:存儲在代碼段,只讀。
變量:
根據作用域,可分為:全局變量、局部變量
根據關鍵字,有:static靜態變量、const常量
根據位置,有:類變量、函數形參
特殊變量:字面量
函數: