C++ shared_ptr与make_shared的优劣
发布时间
阅读量:
阅读量
1.shared_ptr对象创建方法
常见的有两种方式用于初始化std::shared_ptr对象。
第一种方式是通过其构造函数实现。
第二种方式则是利用std::make_shared函数完成。
2.这两种方法都有哪些不同的特性呢?
非侵入式的shared_ptr意味着其值不会存储在其对象内部。shared_ptr实际位于外部空间中,在未被其他shared_ptr占用的情况下生成其计数器结构的空间——当一个shared_prig由一块原始(raw)指针创建时(原始内存:指的是此时还没有其他共享ptr指向这块内存),这个计数器也就随之产生。这个计数器结构的空间将一直存在于系统中——直到所有共享ptr和weak_prig都被销毁的时候。这时候就比较巧妙了,在这种情况下所有共享ptr都被销毁的同时这块空间已经被释放了(虽然可能还有weak_prig还在)。
class Object
{
private:
int value;
public:
Object(int x = 0):value(x) {}
~Object() {}
void Print() const {cout << value << endl; }
};
int main()
{
全部评论 (0)
还没有任何评论哟~
