在查看 libc++中std::basic_string的实现时,我发现在第1374行(写作时)有以下内容:
enum {__alignment = 16};
这个值用于后续的对齐计算,字符串大小请求会被四舍五入为这个数字的倍数。
我可以理解一些四舍五入是为了避免内存碎片等问题,但是...
我想知道在这里使用硬编码的 16 是否有任何特定的理由,还是仅仅作为一个“好看的”数字而已。
对于64位机器,16
相当于 alignof(std::max_align_t)
,这是有一定道理的。但是同样的值在32位体系结构中也用于 __alignment
,那么...?
<memory>
或其他地方找不到硬编码的16(除了在<deque>
中,这显然与此无关)。 - DevSolar