gpt4 book ai didi

c++ - std::unique_ptr 如何没有大小开销?

转载 作者:行者123 更新时间:2023-12-02 05:54:43 31 4
gpt4 key购买 nike

如果空类的大小不能为 0,那么 std::tuple 有何魔力,使得 unique_ptr 的 sizeof 在 64 位机器中返回 8?

在 unique_ptr 中,成员定义为:

  typedef std::tuple<typename _Pointer::type, _Dp>  __tuple_type;                 
__tuple_type _M_t;

其中_Dp是删除器类。

编译器是 gcc 版本 4.7.1 (Debian 4.7.1-7)

最佳答案

原因是typename _Dp = default_delete<_Tp>是一个空类,tuple模板采用空基类优化。

如果您实例化 unique_ptr使用非默认删除,您应该会看到大小增加。

关于c++ - std::unique_ptr 如何没有大小开销?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35801465/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com