【发布时间】:2023-03-16 18:15:01
【问题描述】:
我从一些博客中读到默认构造(空)shared_ptr 会自动初始化为nullptr。但是在标准中找不到任何这样的明确声明。
我写了一个小sn-p(Linux Compiled)来确认这一点:
#include <iostream>
#include <memory>
struct Base;
int main()
{
std::shared_ptr<Base> p;
Base* b;
if (p == nullptr) {
std::cout << "p IS NULL \n";
}
else {
std::cout << "p NOT NULL \n";
}
if (b == nullptr) {
std::cout << "b IS NULL \n";
}
else {
std::cout << "b NOT NULL \n";
}
return 0;
}
输出:
p IS NULL b NOT NULL
从这里我看到智能指针在声明时被隐式分配nullptr。有人可以确认这种行为吗?在不手动分配nullptr 的情况下使用shared_ptr 是否安全?
【问题讨论】:
标签: c++ c++11 smart-pointers