unique_ptr
实例(没有自定义删除器)的内存占用与原始指针相同,还是实例存储了更多内容?
如@JoachimPileborg所建议,使用GCC 4.8(x64)即可实现此代码
std::cout << "sizeof(unique_ptr) = " << sizeof(std::unique_ptr<int>) << '\n';
以下代码:
sizeof(unique_ptr) = 8
根据这个实现,答案是肯定的。这并不奇怪:毕竟,unique_ptr
没有为原始指针添加功能(例如像shared_ptr
那样的计数器。事实上,如果我打印sizeof(shared_ptr<int>)
,结果这次是16
)。unique_ptr
会为您处理指针管理的一些方面。
顺便说一下,由于unique_ptr
与原始指针不同,因此在使用其中之一时生成的代码将有所不同。特别是,如果unique_ptr
超出您的代码范围,则编译器将为该特定专业化的析构函数生成代码,并且每当销毁该类型的unique_ptr
时,它将使用该代码(这正是您想要的)。
sizeof
来检查并与原始指针进行比较呢? - Some programmer dude