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)
从您提供的少量数据来看,它似乎将内存分配到最接近的 2 的幂。由于对 CPU 架构细节知之甚少,我可能猜测分配 2 的幂大小比不填充更快,至少对于少量来说是这样。也许您应该看看当您尝试分配更大的东西时会发生什么?
您是否有任何理由绝对需要从顶部撇去这些额外的字节?