Visual C++ で、メモリ アライメントを必要とする SSE2 関数を使用できるように、16 バイトでアライメントされたメモリを動的に割り当てようとしています。今、これは私がメモリを割り当てる方法です:
boost::shared_array aData(new unsigned char[GetSomeSizeToAllocate()]);
_aligned_malloc を使用してアラインされたメモリを割り当てることができることはわかっていますが、メモリを解放しようとするとブーストで問題が発生しますか? これは、ブーストがメモリを解放するために使用するコードです。
template inline void checked_array_delete(T * x)
{
typedef char type_must_be_complete[ sizeof(T)? 1: -1 ];
(void) sizeof(type_must_be_complete);
delete [] x;
}
delete によって解放されたメモリは、new で割り当てる必要がありますよね? これを回避する方法についてのヒントはありますか?