2

假设我有一个由共享指针管理的对象:shared_ptr<X>. 假设我的X类有 98 个字节大,最后一个数据成员位于字节 97-98(一个字符)。

一般来说,共享 ptr 包含一个指向我的X对象的原始指针和一个指向引用计数对象的原始指针,该对象包含两个计数器(一个强引用计数器和一个弱引用计数器)。

引用计数对象将从哪个地址开始(即两个引用计数的位置)?它会在我的X课程结束后,即第 98 个字节之后立即出现吗?或者会有一个特定的数字对齐方式,比如 32 字节对齐,它会在第 128 个字节处?一般由什么决定位置?

假设make_shared已使用。

4

1 回答 1

0

This is surely an implementation detail.

However there are really only two options, the reference counting stuff can either go before or after the managed T object.

In any case I would assume that the reference counters will be aligned to their natural alignment since having an integer which is not naturally aligned will crash on some platforms and be much, much slower on other platforms.

于 2014-06-08T07:34:32.220 回答