關於map中內存管理的一些理解

關於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只是管理了當前最高層的一個類的內存分配,如果有特殊需要或者類裏面沒有太多指針,主要是要頻繁的插入和刪除這些類,如果手動開闢內存會造成系統底層頻繁調用和形成小的碎片,會成爲系統運行瓶頸。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章