shared_ptr 是C++共享指针,往往应用在动态分配内存的场景下。相较于new操作符的优势在于shared_ptr共享指针可以自动进行动态内存释放,而new必须与delete配合使用,否则会造成内存泄露。
一个好的建议是:坚持只使用智能指针,就可以避免忘记delete造成的内存泄露,避免同一块内存被释放两次的问题。对于一块内存,只有在没有任何智能指针指向它的情况下才会自动释放它。
shared_ptr还可以作为class的成员,以使该class的对象能够共享数据。下面的代码进行了一下简单的实践。
#include <iostream>
#include <memory>
#include <initializer_list>
#include <vector>
using namespace std;
class intBlob
{
friend ostream &printBlob(ostream &os, intBlob &blob);
public:
explicit intBlob(initializer_list<int> il) : data_(make_shared<vector<int>>(il))
{
std::cout << "列表初始化构造函数" << std::endl;
}
intBlob() : data_(make_shared<vector<int>>