天天看點

c++ 的三種記憶體管理

1. 自動記憶體管理,像局部變量;配置設定在棧中;

2. 靜态配置設定記憶體,static 變量;配置設定在bss區,和全局變量一樣;

3. 動态配置設定記憶體,new(); 配置設定在堆中;

補充:

1.給數組配置設定記憶體:

在為對象(類的執行個體)數組配置設定記憶體時,每個元素都通過類的預設構造函數來初始化,會帶來運作時的很多開銷;更好的方法是<memory>中的allocator<T>,成員函數allocator配置設定記憶體,但不初始化,construct()來初始化。

2.new與malloc差別

new是運算符,有類型檢查,sizeof,會有對象的初始化,并執行構造函數和析構函數;malloc是庫函數,适用于内部資料類型;

3.auto_ptr(RAII)

存儲指針,并保證指針所指向對象作用域結束時銷毀對象。

再補充:

4. 對于頻繁的new/delete操作,要使用記憶體池。

繼續閱讀