来自博客:https://www.cnblogs.com/lzpong/p/6188034.html 多线程程序经常会遇到在某个线程A创建了一个对象,这个对象需要在线程B使用, 在没有shared_ptr时,因为线程A,B结束时间不确定,即在A或B线程先释放这个对象都有可能造成另一个线程崩溃, 所以 ...
分类:
其他好文 时间:
2019-01-25 16:06:48
阅读次数:
205
在C++中,动态内存的管理是通过一对运算符来完成的:new,在动态内存中为对象分配空间并返回一个指向该对象的指针,可以选择对对象进行初始化;delete,接受一个动态对象的指针,销毁该对象,并释放与之关联的内存。 动态内存的使用很容易出问题,因为确保在正确的时间释放内存是极其困难的。有时会忘记释放内 ...
分类:
编程语言 时间:
2019-01-24 18:51:00
阅读次数:
168
在重新分配内存的过程中,从旧内存将元素拷贝到新内存是不必要的,更好的方式是移动元素。使用移动而不是拷贝的另一个原因源于IO类或unique_ptr这样的类。这些类包含不能被共享的资源(如指针或IO缓冲),因此,这些类型的对象不能拷贝,但是可以移动。 标准库容器、string和shared_ptr类既 ...
分类:
移动开发 时间:
2019-01-13 11:38:41
阅读次数:
231
动态内存相关内容,智能指针shared_ptr, unique_ptr, weak_ptr, 动态数组的操作,allocator类及算法 ...
分类:
编程语言 时间:
2018-12-27 23:42:06
阅读次数:
352
资源管理 所谓资源就是,一旦用了它,将来必须还给系统. 13.以对象管理资源 为防止资源泄露,请使用RAII对象,他们在构造函数中获得资源并在析构函数中释放资源. 两个常被使用的RAII classes 对象分别是trl::shared_ptr和auto_ptr.前者通常是较佳选择,因为其copy行 ...
分类:
其他好文 时间:
2018-12-22 16:44:37
阅读次数:
228
+ 错误信息 /usr/include/boost/smart_ptr/shared_ptr.hpp:646: typename boost::detail::sp_dereference::type boost::shared_ptr::operator () const [with T = pc ...
分类:
其他好文 时间:
2018-12-06 20:50:18
阅读次数:
660
目前仅仅测试工作中 使用的比较多的: 智能指针 1. shared_ptr 支持! 同时也支持 make_shared 2. weak_ptr 支持,毕竟这是个给shared_ptr打辅助的指针模板 3. unique_prt 支持! ,但不支持make_unique,这也正常,毕竟这是C++14的 ...
分类:
编程语言 时间:
2018-11-29 10:59:58
阅读次数:
816
c++11标准和boost都提供了智能指针的功能。智能指针是普通指针的封装,智能指针是一个对象,对象里面包含了原生指针。可以使用智能指针对象的get()方法可获得封装在里面的原生指针。使用智能指针管理内存,用到智能指针的地方需要统一使用c++11或boost库,切忌混合使用。c++11的智能指针包含 ...
分类:
其他好文 时间:
2018-10-30 14:48:03
阅读次数:
123
头文件:#inlcude<memory> 智能指针类型: auto_ptr (C++98)弃用 shared_ptr, unique_ptr ,weak_ptr (C++11) 指针的初始化函数:make_shared(C++11),make_unique (C++14),返回bool 以上均位于n ...
分类:
编程语言 时间:
2018-10-29 02:01:16
阅读次数:
293
本文参考 "C++智能指针简单剖析" 内存泄露 我们知道一个对象(变量)的生命周期结束的时候, 会自动释放掉其占用的内存(例如局部变量在包含它的第一个括号结束的时候自动释放掉内存) 这样会编译错误. 但是如果这样写呢? 程序结束的时候会自动释放 的内存, 但是由 算符创建的匿名变量却一直留在内存中, ...
分类:
编程语言 时间:
2018-10-22 20:49:54
阅读次数:
155