若容器中包含了new创建的指针,一定要在析构前delete掉
来源:互联网 发布:硬件温度监控软件 编辑:程序博客网 时间:2024/05/18 16:56
大多数情况下,STL会自动帮你析构,不需要你自己考虑善后工作。
但是,当容器中包含的对象是new创建的指针时,就不正确了。
如下面代码:
void doSomething(){
vector<Widget*> w1;
for(int i=0;i<length;i++)
{
w1.push_back(new Widget);
...
}
}
上述代码会发生内存泄漏。vector容器只会把指向对象的指针析构掉,指针所指向的堆空间的对象
并不会被析构,会导致内存泄漏。
解决方法:
1.自己在程序中记得将指针delete掉。
2.使用智能指针对象,但不要用auto_ptr 因为auto_ptr会将所有权传递给被复制的auto_ptr上,自身会变成NULL
这样对之后的操作会带来很大的错误。而且,一般编译器也会禁止这种情况。
阅读全文
0 0
- 若容器中包含了new创建的指针,一定要在析构前delete掉
- 如果容器中包含了通过new操作创建的指针,切记在容器对象析构前将指针delete掉
- Effective STL 第7条:如果容器中包含了通过new操作创建的指针,切记在容器对象析构前将指针delete掉
- 条款7.使用包含由new产生的指针容器时,切记在容器销毁前delete指针
- 包含指针的容器delete方式
- 容器内指针的new和delete
- new 的一定要delete吗?
- 条款7:当使用new得指针的容器时,记得在销毁容器前delete那些指针
- C++中指针的new和delete
- 一定要配对的使用new和delete
- new出来的对象一定要delete
- C++中new和delete在数组指针和指针数组中的调用
- 全局重载new和delete之后能否在STL中使用默认的new和delete
- 第17条:以独立语句将new创建的对象存储在智能指针中
- 二维指针的new和delete
- new、delete 与指针
- new delete 指针
- C++ 指针 new delete
- HDU5521 Meeting
- Codeforces 861 C. Did you mean... (模拟)
- 关于priority_queue的博客传送门
- js封装ajax
- Linux Mint 18 系统安装常见问题整理
- 若容器中包含了new创建的指针,一定要在析构前delete掉
- Machine learning for OpenCV 学习笔记 day6
- makefile命令
- 直流电机控制
- SQL实战题目(三)
- 文章标题 实验三:内部模块化的命令行菜单小程序V2.0
- 关于js中的this的指向问题
- Docker下HBase学习,三部曲之三:java开发
- 用C++创建快捷方式