Compiler Warning (level 3) C4316


The new home for Visual Studio documentation is Visual Studio 2017 Documentation on

The latest version of this topic can be found at 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