gpt4 book ai didi

c++ - std::string 和数据对齐

转载 作者:行者123 更新时间:2023-11-30 02:38:59 26 4
gpt4 key购买 nike

我打算使用 std::string 作为通用数据缓冲区(而不是自己滚动)。我需要将各种 POD 打包到其中,包括用户定义的结构,std::string 分配的内存缓冲区是否为此目的正确对齐?

如果在C++标准中没有规定,libstdc++中是什么情况?

主机 CPU 是 x86_64。

最佳答案

首先,std::string如果您想做的是存储任意数据,则可能不是最好的容器。我建议使用 std::vector相反。

其次,容器进行的所有分配的对齐由其分配器控制(第二个模板参数,默认为 std::allocator<T> )。默认分配器将根据最大标准类型的大小对齐分配,通常是 long longlong double ,在我的机器上分别是 8 字节和 16 字节,但是这些类型的大小不是标准规定的。

如果你想要一个特定的对齐,你应该检查你的编译器对齐的内容,或者通过提供你自己的分配器或使用 std::aligned_storage 来明确地要求对齐。 .

关于c++ - std::string 和数据对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30257595/

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