gpt4 book ai didi

c++ - 如何计算对象和 shared_ptr 的对齐方式?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:53:28 29 4
gpt4 key购买 nike

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

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

引用计数对象从什么地址开始(即两个引用计数的位置)?会在我的 X 结束后立即开始吗?类,第 98 个字节?或者是否会有特定的数字对齐方式,比如 32 字节对齐并且它位于第 128 个字节?一般由什么决定位置?

假设make_shared已被使用。

最佳答案

这肯定是一个实现细节。

然而实际上只有两个选项,引用计数的东西可以在托管 T 对象之前或之后。

在任何情况下,我都假设引用计数器将按照它们的自然对齐方式对齐,因为具有非自然对齐的整数会在某些平台上崩溃并且在其他平台上会慢得多。

关于c++ - 如何计算对象和 shared_ptr 的对齐方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24070651/

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