You can allocate a std::vector which allocates aligned heap memory by defining your own allocator. You can allocate a c-style array on the stack using declspec align. But ca
tr1::array
(and std::array
and boost::array
) are POD, so the memory occupied by the contents is coincident with the memory of the array
. So, allocate the array
however you need to, and construct it with placement new
.
typedef std::tr1::array< MyClass, ary_sz > AryT;
void *array_storage = aligned_allocation( sizeof( AryT ) );
AryT *ary = new( array_storage ) AryT( initial_value );