В Visual C ++ я пытаюсь динамически выделить некоторую память, которая выровнена по 16 байтов, чтобы я мог использовать функции SSE2, которые требуют выравнивания памяти.Прямо сейчас вот как я распределяю память:
boost::shared_array aData(new unsigned char[GetSomeSizeToAllocate()]);
Я знаю, что могу использовать _aligned_malloc для выделения выровненной памяти, но это вызовет проблему с повышением, когда он попытается освободить мойобъем памяти?Это расширение кода, используемое для освобождения памяти:
<pre>
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;
}
Свободная память при удалении должна быть выделена новой, верно?Любой совет, как я могу обойти это?