This question already has answers here:
How can std::unique_ptr have no size overhead?
(2个答案)
5年前关闭。
产生以下输出:
因此,在此实现下,答案为是。
这并不令人惊讶:毕竟,
顺便说一句,由于
(2个答案)
5年前关闭。
unique_ptr
实例(不带自定义删除器)是否具有与原始指针相同的内存占用量,或者实例存储的不仅仅是指针? 最佳答案
正如@JoachimPileborg建议的那样,在GCC 4.8(x64)中,此代码
std::cout << "sizeof(unique_ptr) = " << sizeof(std::unique_ptr<int>) << '\n';
产生以下输出:
因此,在此实现下,答案为是。
这并不令人惊讶:毕竟,
unique_ptr
不会向原始指针添加功能(例如,像shared_ptr
一样添加一个计数器。实际上,如果我打印sizeof(shared_ptr<int>)
,那么这次的结果就是16
)。 unique_ptr
在指针管理的某些方面为您服务。顺便说一句,由于
unique_ptr
与原始unique_ptr
不同,因此使用一个或另一个时生成的代码将有所不同。特别是,如果unique_ptr
超出了代码的范围,则编译器将为该特定特化的析构函数生成代码,并且每次销毁该类型的ojit_code时,它将使用该代码(这正是你要)。09-06 00:11