Effective STL 条款7
来源:互联网 发布:淘宝店贷款条件 编辑:程序博客网 时间:2024/05/16 09:36
使用容器的时候 ,要避免内存泄露
众所周知,使用容器的好处是我们不用考虑容器的内存问题,容器本身具有自动内存管理的能力,包括动态申请内存和释放内存。
但是,当你存储的对象是指针的时候,你就要注意内存的人工释放了。
如下代码:
void doSomething(){ vector<Widget*>vwp; for(int i=0;i<num;i++) { vwp.push_back( new Widget); } ....}
当退出doSomething函数的时候,vwp对象的内存删除了,但是,vwp对象中每个元素都是Widget指针,对应的Widget指针指向的内存却没有被回收。这种状态就导致了内存泄露。
如何解决呢?最直接的办法就是人工删除。
如下代码:
void doSomething(){ vector<Widget*>vwp; for(int i=0;i<num;i++) { vwp.push_back( new Widget); } .... for(vector<Widget*>::iterator i = vwp.begin();i!=vwp.end();++i) { delete *i; }}
上面的代码就避免了内存的泄露
Effective STL的作者是一个追求完美的人,他认为这种写法不高大上,所以,他就创建了一个结构体来实现内存泄露。
抽时间再贴代码
1 0
- Effective STL 条款7
- Effective STL 条款7
- Effective STL学习笔记-条款7
- Effective STL 条款17
- Effective STL 条款18
- Effective STL 条款16
- Effective STL条款50
- Effective STL 条款35
- Effective STL 条款37
- Effective STL 条款1
- Effective STL条款21
- Effective STL条款44
- Effective STL条款16
- Effective STL条款29
- Effective STL 条款18
- Effective STL 条款1
- Effective STL 条款30
- Effective STL 条款2
- 视频运动矢量图matlab
- ubuntu安装配置squid进行代理
- Linux查看网卡是千兆还是万兆网卡
- 共享位置
- 如何成为技术大牛
- Effective STL 条款7
- java 调用python
- 剑指offer 36 两个链表的第一个公共结点
- mysql 赋给用户权限 grant all privileges on
- 从RTSP协议SDP数据中获得二进制的SPS、PPS
- 计篇(二)
- bzoj 2964: Boss单挑战 动态规划
- python.format() 格式化字符串
- 隐式共享