Поделиться через


Предупреждение компилятора (уровень 3) C4316

Объект, выделенный в куче, не может быть выровнен для этого типа.

Выделенный по выравниванию объект operator new может не иметь указанного выравнивания. Переопределите оператор new and operator delete for over-aligned types, чтобы они использовали выровненные подпрограммы выделения, например _aligned_malloc и _aligned_free. Следующий пример приводит к возникновению ошибки C4316:

// C4316.cpp
// Test: cl /W3 /c C4316.cpp

__declspec(align(32)) struct S {}; // C4324

int main() {
    new S; // C4316
}