码迷,mamicode.com
首页 >  
搜索关键字:shared_ptr    ( 356个结果
为什么多线程读写 shared_ptr 要加锁?
(shared_ptr)的引用计数本身是安全且无锁的,但对象的读写则不是,因为 shared_ptr 有两个数据成员,读写操作不能原子化。 shared_ptr 的线程安全级别和内建类型、标准库容器、std::string 一样,即: ? 一个 shared_ptr 对象实体可被多个线程同时读取(文 ...
分类:编程语言   时间:2017-10-28 22:04:27    阅读次数:386
c++二叉树
//头文件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四种智能指针使用总结
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的初始化
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
c++跨动态库DLL的内存分配与释放问题
先说结论: 1、如果两个DLL(或者EXE调用DLL)的CRT链接均为MD,则可以跨动态库分配和释放,如果一个是MT,另外一个是MD则会有问题。 2、利用虚函数的动态绑定技术,动态绑定分配释放内存的new和delete等,可以解决这个问题,例如shared_ptr。但如果shared_ptr包装是v ...
分类:编程语言   时间:2017-09-11 21:06:28    阅读次数:174
shared_ptr的线程安全性
一: 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
C++关于智能指针
有四种: 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
c++趣味之shared_ptr额外好处
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
CentOS 6.9升级gcc至6.4.0版本
一、升级前测试: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
356条   上一页 1 ... 10 11 12 13 14 ... 36 下一页
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!