auto_ptr: unique_ptr: shared_ptr和weak_ptr: ...
分类:
其他好文 时间:
2018-03-04 18:09:20
阅读次数:
134
C++没有内存回收机制,每次程序员new出来的对象需要手动delete,流程复杂时可能会漏掉delete,导致内存泄漏。于是C++引入智能指针,可用于动态资源管理,资源即对象的管理策略。 一、智能指针类别 智能指针主要有三种:shared_ptr,unique_ptr和weak_ptr。 share ...
分类:
其他好文 时间:
2018-02-25 12:58:35
阅读次数:
235
在对象拷贝后就立即被销毁的情况下,移动而非拷贝对象会大幅度提升性能。以及像 IO 类或 unique_ptr 这样的类,包含不能被共享的资源,不能拷贝但可以移动。而标准库容器、string 和 shared_ptr 类既支持移动也支持拷贝 右值引用: 右值引用是 c++11 为了支持移动操作引入的。 ...
分类:
移动开发 时间:
2018-02-11 23:37:40
阅读次数:
212
#include <string>#include <iostream>#include <boost/shared_ptr.hpp>class implementation{public: ~implementation() { std::cout <<"destroying implementa ...
分类:
其他好文 时间:
2018-01-09 13:00:14
阅读次数:
154
错误提示: CMakeFiles/my_subscriber.dir/src/my_subscriber.cpp.o:在函数‘imageCallback(boost::shared_ptr<sensor_msgs::Image_<std::allocator<void> > const> const ...
分类:
其他好文 时间:
2018-01-02 17:52:44
阅读次数:
3281
6.10 智能指针C++11 提供智能指针的数据类型,对垃圾回收技术提供了一些支持,实现一定程度的内存管理 unique_ptr:不允许多个指针共享资源,可以用标准库中的move函数转移指针shared_ptr:多个指针共享资源weak_ptr:可复制shared_ptr,但其构造或者释放对资源不产 ...
分类:
编程语言 时间:
2017-12-13 23:24:14
阅读次数:
179
1.shared_ptr:允许多个指针指向同一个对象 初始化方式: shared_ptr p1 = make_shared(10);//最好使用这种方式 shared_ptr p2(new int(20)); //只能用直接初始化方式 和普通指针有一样的操作,*,->,swap等 支持拷贝与赋值与自... ...
分类:
其他好文 时间:
2017-12-02 23:26:30
阅读次数:
201
一、关键 每个shared_ptr所指向的对象都有一个引用计数,它记录了有多少个shared_ptr指向自己 shared_ptr的析构函数:递减它所指向的对象的引用计数,如果引用计数变为0,就会销毁对象并释放相应的内存 引用计数的变化:决定权在shared_ptr,而与对象本身无关 二、引用计数初 ...
分类:
其他好文 时间:
2017-11-17 18:35:23
阅读次数:
204
c++11 智能指针 unique_ptr、shared_ptr与weak_ptr C++11中有unique_ptr、shared_ptr与weak_ptr等智能指针(smart pointer),定义在<memory>中。 可以对动态资源进行管理,保证任何情况下,已构造的对象最终会销毁,即它的析 ...
分类:
编程语言 时间:
2017-11-05 18:30:24
阅读次数:
155
指针是柄双刃剑,用的好,就会威力倍增;用的稍有闪失,就会造成悲剧。 自从c++11引入智能指针shared_ptr后,我们似乎再也不用担心new的内存没有释放之类的问题了,但是,这样就万无一失了吗? 答案显然不是的,在智能指针与常规指针转换的过程中,我们仍需要注意一些坑。 1.常规指针转换为智能指针 ...
分类:
编程语言 时间:
2017-11-01 23:53:41
阅读次数:
518