Compiler Warning (level 3) C4316

Object allocated on the heap may not be aligned for this type.

An over-aligned object allocated by using operator new may not have the specified alignment. Override operator new and operator delete for over-aligned types so that they use the aligned allocation routines—for example, _aligned_malloc and _aligned_free. The following sample generates C4316:

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

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

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