關於map估計大家都已經再熟悉不過了,但是要是說到內存如何分配,和管理,可能你會說那都是底層的東西,一般用不到,那麼今天就自己最近研究的一點心得和大家說說。
map中本來底層自己帶了一個allacte內存分配器,但是基於以前的代碼經驗和習慣,每次都是自己new一個類,然後再插入到map,災後在釋放的時候在自己手動釋放類,這樣看起來沒問題,但是如果我在家不想控制內存這塊,讓map幫我處理,可以嗎? 這個當然可以。
以下是一個簡單的例子
class A
{
public:
A() { }
A(const A& a) {} //這個很關鍵
~A() { }
}
void main( )
{
std::map<int,A> map;
A a;
map.insert(std::make_pair(1,a));
}
只是在類裏面加了一個構造函數,就可以實現map自動實現內存分配管理,如果類中還有指針,還是需要在析構函數中手動釋放和管理,這個map只是管理了當前最高層的一個類的內存分配,如果有特殊需要或者類裏面沒有太多指針,主要是要頻繁的插入和刪除這些類,如果手動開闢內存會造成系統底層頻繁調用和形成小的碎片,會成爲系統運行瓶頸。