在查看std::basic_string 的 libc++ 实现时,我在第 1374 行遇到了这个问题(在撰写本文时):
enum {__alignment = 16};
该值用于后续的对齐计算,字符串大小请求被四舍五入为该数字的倍数。
我可以接受正在进行一些舍入以避免内存碎片或其他什么,但是......
我想知道在这里使用硬编码的16作为数字是否有任何特定的理由,或者它是否只是用作“漂亮的'圆形'数字”。
对于 64 位机器,16
相当于alignof( std::max_align_t )
,这在某种程度上是有意义的。__alignment
但是对于 32 位架构也使用完全相同的值,所以...?