std :: array alignment

cen*_*lug 9 c++ arrays vector alignment padding

尝试std::tr1::array在mac上我得到16字节对齐.

sizeof(int) = 4;  
sizeof( std::tr1::array< int,3 > ) = 16;  
sizeof( std::tr1::array< int,4 > ) = 16;    
sizeof( std::tr1::array< int,5 > ) = 32;
Run Code Online (Sandbox Code Playgroud)

STL中是否有任何行为类似于数组<T,N>,但保证不会自行填充,即

sizeof( ARRAY< T, N> ) = sizeof(  T )*N  
Run Code Online (Sandbox Code Playgroud)

sem*_*ght 0

从您提供的少量数据来看,它似乎将内存分配到最接近的 2 的幂。由于对 CPU 架构细节知之甚少,我可能猜测分配 2 的幂大小比不填充更快,至少对于少量来说是这样。也许您应该看看当您尝试分配更大的东西时会发生什么?

您是否有任何理由绝对需要从顶部撇去这些额外的字节?