Advertisement

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)

还没有任何评论哟~