Mus*_*ful 8 c++ unique-ptr c++11
做一个unique_ptr实例(没有定制删除)具有相同的内存占用为原料指针或不仅仅是该指针的实例存储更多?
正如@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(这正是您想要的).