关于map中内存管理的一些理解
2017-07-19 16:53
281 查看
关于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只是管理了当前最高层的一个类的内存分配,如果有特殊需要或者类里面没有太多指针,主要是要频繁的插入和删除这些类,如果手动开辟内存会造成系统底层频繁调用和形成小的碎片,会成为系统运行瓶颈。
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只是管理了当前最高层的一个类的内存分配,如果有特殊需要或者类里面没有太多指针,主要是要频繁的插入和删除这些类,如果手动开辟内存会造成系统底层频繁调用和形成小的碎片,会成为系统运行瓶颈。
相关文章推荐
- 关于Collections.unmodifiableMap的一些理解
- 关于java内存管理的一些理解
- 关于SSH框架设计的一些理解
- 关于宏定义的一些理解
- 关于float的一些理解
- 关于多态的一些理解
- 关于C#中委托的一些理解与模仿
- 关于SAX,DOM,JAXP,JDOM,DOM4J的一些理解
- 关于面对抽象编程的一些初步理解
- 关于js with语句的一些理解
- 关于HashMap的一些深入探索与理解
- iPhone开发关于UDID和UUID的一些理解
- 关于寄存器ESP和EBP的一些理解
- 关于Andiroid SDcard 自己的一些理解
- 关于map和null的一些小故事
- 一些面试题:关于指针的一些理解
- android 中关于 activity 的一些理解
- 关于Myeclipse调试的一些个人理解
- 关于寄存器ESP和EBP的一些理解
- 关于Http协议与TCP协议的一些简单理解