unique_ptr的内存占用

Mus*_*ful 8 c++ unique-ptr c++11

做一个unique_ptr实例(没有定制删除)具有相同的内存占用为原料指针或不仅仅是该指针的实例存储更多?

Pao*_*o M 7

正如@JoachimPileborg建议的那样,使用GCC 4.8(x64)这段代码

std::cout << "sizeof(unique_ptr) = " << sizeof(std::unique_ptr<int>) << '\n';
Run Code Online (Sandbox Code Playgroud)

产生这个输出:

sizeof(unique_ptr)= 8

所以,在这个实现下,答案是肯定的.

这并不令人惊讶:毕竟,unique_ptr不会向原始指针添加功能(例如,计数器也是如此.事实上,如果我这次打印结果的话 ).关注指针管理的某些方面.shared_ptrsizeof(shared_ptr<int>)16unique_ptr

顺便说一句,unique_ptr与原始代码不同,生成的代码在使用其中一个时会有所不同.特别是,如果unique_ptr代码中的范围超出范围,编译器为该特定特化的析构函数生成代码,并且每次销毁该类型时它将使用该代码unique_ptr(这正是您想要的).