shared pointer】的更多相关文章

#include <string>#include <fstream>#include <memory>#include <cstdio> class FileDeleter{ private: std::string filename; public: FileDeleter(const std::string& fn) :filename(fn){} void operator()(std::ofstream* fp){ fp->close…
smart pointer是一种abstract data type,它可以模仿指针的行为,而且额外提供了一系列诸如自己主动内存管理.边界检查等特性,这些特性是为了在保证效率的基础上降低因为对指针的不正常使用而带来的bug. smart pointer可以自己主动进行object的销毁:当某个object的最后一个拥有者被destroy的时候(如局部变量离开了作用域).由smart pointer管理的object会被自己主动销毁.smart pointer是被声明在stack中的 在C++中.…
一.概念介绍 unique_ptr它是一种在异常发生时可帮助避免资源泄露的smart pointer,实现了独占式拥有的概念,意味着它可确保一个对象和其他相应资源在同一时间只被一个pointer拥有,一旦拥有者被销毁或变成空或开始拥有另一个对象,那么先前拥有的那个对象就会被销毁,其任何相应资源亦会被释放. Class unique_pt继承自class auto_ptr(由于不安全已被弃用),但它提供了更简明的接口,更不易出错. 1.1 出现的目的性 为了避免异常时的资源泄露,通常函数会捕获所有…
1. boost::scoped_ptr is a smart pointer that is the sole owner of a dynamically allocated object and cannot be copied or moved. #include <boost/scoped_ptr.hpp> #include <iostream> int main() { boost::scoped_ptr<)); std::cout << *p <…
Defined in header <memory>       template< class T > class shared_ptr;   (since C++11)   std::shared_ptr is a smart pointer that retains shared ownership of an object through a pointer. Severalshared_ptr objects may own the same object; the ob…
5.2 Smart Pointer(智能指针) shared_ptr的aliasing构造函数,接受一个shared pointer和一个raw pointer.它允许你掌握一个事实:某对象拥有另一个对象.例如: struct X { int a; }: shared_ptr<X> px(new X); shared_ptr<int> pi(px,&px->a); weak_ptr是shared-ptr的帮手,用来共享但不拥有对象,它的use_count()返回的对象…
点云数据可以用ASCII码的形式存储在PCD文件中(关于该格式的描述可以参考链接:The PCD (Point Cloud Data) file format).为了生成三维点云数据,在excel中用rand()函数生成200行0-1的小数,ABC三列分别代表空间点的xyz坐标. # .PCD v.7 - Point Cloud Data file format VERSION .7 FIELDS x y z SIZE 4 4 4 TYPE F F F COUNT 1 1 1 WIDTH 200…
对boost::shared_from_this的进一步封装 熟悉异步编程的同学可能会对boost::shared_from_this有所了解.我们在传入回调的时候,通常会想要其带上当前类对象的上下文,或者回调本身就是类成员函数,那这个工作自然非this指针莫属了,像这样: void sock_sender::post_request_no_lock() { Request &req = requests_.front(); boost::asio::async_write(*sock_ptr_…
juce中的WeakReference设计得比较巧妙,巧妙就是使用delete之后就可以通知道WeakReference,原理其实也很间单,其实就是在对象里添加了一个子对象masterReference,对象在析构的时候主动调用masterReference.clear();,这样来达到通知弱指针的这个对象已经销毁了,可以设置为空了的目的. 感觉juce最后调用个clear还是觉得有点生硬,外层最好还是再嵌套一层,析构的时候自动调用clear就可以了,对象申明也写成宏,这样的话就简洁多了. 使用…
引言 UNIX 内核管理的进程自主地操作,从而产生更稳定的系统.然而,每个开发人员最终都会遇到这样的情况,即其中一组进程需要与另一组进程通信,也许是为了交换数据或发送命令.这种通信称为进程间通信(Inter-Process Communication,IPC).System V (SysV) UNIX 规范描述了以下三种 IPC 机制,它们统称为 SysV IPC: 消息队列 信号量 共享内存 此外,进程还可以通过其他机制通信,例如: 读.写和锁定文件 信号 套接字 管道 FIFO(先进先出)…