unique_ptr的内存占用

时间:2015-11-07 07:34:26

标签: c++ c++11 unique-ptr

unique_ptr实例(没有自定义删除器)是否与原始指针具有相同的内存占用,或实例存储的内容不仅仅是指针?

1 个答案:

答案 0 :(得分:7)

正如@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将被销毁(这正是您想要的)。