boost::shared_array 也同样提供了 get() 和 reset() 方法。 另外还重载了 operator bool()。2.5 弱指针boost::weak_ptr 必定总是通过 boost::shared_ptr 来初始化的。一旦初始化之后,它基本上只提供一个有用的方法: ==lock()==。此方法返回的boost::shared_ptr 与用来初始化弱指针的共享指针共享所有权...
共享数组对应的类型是boost::shared_array,它的定义在boost/shared_array.hpp里。 #include <boost/shared_array.hpp> #include <iostream> int main() { boost::shared_array<int> i1(new int[2]); boost::shared_array<int> i2(i1); i1[0] = 1; std::cout << i2[0] << std::endl; } ...
shared_ptr(std::auto_ptr < Y > & r),从一个auto_ptr获得指针的管理权,引用计数置为1,同时auto_ptr失去指针的管理权。 “=” 赋值运算符,对于对象shared_ptr和auto_ptr,结果同构造函数。 当然,还有特殊的shared_ptr(Y * p,D d),第二个参数指定了析构时的一些特性,之后再做介绍。 reset() 对于不...
应该避免使用临时的shared_ptr对象,对此,boost上的说明是:假设有下面的代码,ok函数是正确的做法,而bad函数有可能会导致内存泄露,因为f函数参数的执行顺序可能是先new int(2),再执行g(),然后再执行shared_ptr<int>(),假设在g()方法中产生了异常,将不会再执行shared_ptr<int>(),new int(2)的内存泄露。 View...
shared_array与shared_ptr作用是相同的,只是它是用于处理数组的。 shared_arrayMyStrings?( new Base[20] ); 深入shared_ptr实现 创建一个简单的智能指针是非常容易的。但是创建一个能够在大多数编译器下通过的智能指针就有些难度了。而创建同时又考虑异常安全就更为困难了。 Boost::shared_ptr这些全都做到了,下...
。shared_ptr,允许共享对象所有权 。shared_array,允许共享数组所有权 scoped_ptr scoped_ptr智能指针与std::auto_ptr不同,因为它是不传递所有权的。事实上它明确禁止任何想要这样做的企图!这在你需要确保指针任何时候只有一个拥有者时的任何一种情境下都是非常重要的。如果不去使用scoped_ptr,你可能倾向于使用std...
scoped_array 轻巧方便,没有给程序增加额外负担,但是 scoped_array 功能有限,不能动态增长,也没有迭代器支持,不能搭配 STL 算法,仅有一个纯粹的“裸”数组接口。在需要动态数组的情况下我们应该使用 std::vector 。例如:boost::shared_ptr 主要特点 boost.smart_ptr 库中最有价值,最重要的组成部分。支持...
在boost库中, 智能指针并不只shared_ptr一个。同族但有不同的功能目标的还有如下5个: scoped_ptr scoped_array shared_ptr shared_array weak_ptr scoped_ptr和scoped_array与标准C++中的智能指针auto_ptr功能基本类似,过它不传递所有权,不可复制。从其名称就可以看出,其主要目标就是在小范围,小作用域中使用,...
在C++ 中,boost::shared_ptr 是一个智能指针,用于管理动态分配的对象的生命周期。当最后一个 boost::shared_ptr 指向对象时,对象会自动释放。如果你想故意删除一个 boost::shared_ptr,可以通过以下方法: 使用reset() 方法将其指向一个空指针: 代码语言:cpp 复制 boost::shared_ptr<MyObject> ptr(new My...
namespace boost{// scoped_array extends scoped_ptr to arrays. Deletion of the array pointed to// is guaranteed, either on destruction of the scoped_array or via an explicit// reset. Use shared_array or std::vector if your needs are more complex. ...