(shared_ptr)的引用计数本身是安全且无锁的,但对象的读写则不是,因为 shared_ptr 有两个数据成员,读写操作不能原子化。 shared_ptr 的线程安全级别和内建类型、标准库容器、std::string 一样,即: ? 一个 shared_ptr 对象实体可被多个线程同时读取(文 ...
分类:
编程语言 时间:
2017-10-28 22:04:27
阅读次数:
386
//头文件tree.h 1 #include <memory> 2 #include <iostream> 3 4 using namespace std; 5 6 typedef struct Node{ 7 int key; 8 shared_ptr<Node> parent; 9 shared ...
分类:
编程语言 时间:
2017-10-17 18:45:45
阅读次数:
174
stl中auto_ptr,unique_ptr,shared_ptr,weak_ptr四种智能指针使用总结 1. auto_ptrauto_ptr主要是用来解决资源自动释放的问题,比如如下代码:void Function(){Obj*p = new Obj(20);...if (error occo ...
分类:
其他好文 时间:
2017-10-14 23:28:14
阅读次数:
237
shared_ptr是智能指针,是模板,头文件是memory: 最安全的使用方法是调用make_shared标准库函数,此函数在动态内存中分配一个对象并初始化它,返回此对象的shared_ptr。头文件是memory: 通常用auto,这种方式较为简单: 智能指针与常规指针的重要区别是它负责自动释放 ...
分类:
其他好文 时间:
2017-10-07 14:25:53
阅读次数:
433
一、shared_ptr 最安全的分配和使用动态内存的方法是调用一个名为make_shared的标准库函数。此函数在动态内存中分配一个对象并初始化它,返回指向此对象的shared_ptr。 如果我们不传递参数,对象就会进行值初始化。 shared_ptr内部有一个引用计数变量,记录有多少个其他sha ...
分类:
其他好文 时间:
2017-09-23 13:30:24
阅读次数:
203
先说结论: 1、如果两个DLL(或者EXE调用DLL)的CRT链接均为MD,则可以跨动态库分配和释放,如果一个是MT,另外一个是MD则会有问题。 2、利用虚函数的动态绑定技术,动态绑定分配释放内存的new和delete等,可以解决这个问题,例如shared_ptr。但如果shared_ptr包装是v ...
分类:
编程语言 时间:
2017-09-11 21:06:28
阅读次数:
174
一: All member functions (including copy constructor and copy assignment) can be called by multiple threads on different instances of shared_ptr withou ...
分类:
编程语言 时间:
2017-09-08 10:18:05
阅读次数:
455
有四种: auto_ptr<class T> unique_ptr<class T> shared_ptr<class T> weak_ptr<class T> 这里先讨论前三种: 第一种 :auto_ptr 已摒弃;原因在于: 如 auto_ptr<class T> a(new T); auto_ ...
分类:
编程语言 时间:
2017-09-02 01:07:14
阅读次数:
169
shared_ptr(sp)额外好处是什么?即使被转为基类,析构函数也可以正常执行。 已知两个类 class foo{}; class bar:foo{public:~bar(){}}; 先来看不用sp的情况。 bar* obj = new bar(); delete obj; 这样foo没有虚析构 ...
分类:
编程语言 时间:
2017-09-01 11:54:41
阅读次数:
220
一、升级前测试:1、查看系统版本:#cat/etc/redhat-release2、查看默认的gcc版本:#gcc--version3、查看默认动态库:#strings/usr/lib64/libstdc++.so.6|grepGLIBC4、不支持c++11的新特性:尝试写一个C++11特性的程序段tryCpp11.cc,使用了shared_ptr#vim/tmp/tryCpp11.cc#inc..
分类:
其他好文 时间:
2017-08-31 11:04:07
阅读次数:
1570