Consider the following test case: #define alignement 64 struct test { public: int toto[100] __attribute__((aligned(alignement))); }; int main () { test* t = new test(); printf("%ld\n",(unsigned long)(&(t->toto[0])) % alignement); return 0; } This program typically prints a non-zero value, whereas customers would actually expect 0. This is due to default "new" (presumably doing malloc) only gurantees 16 byte alignment. Compiler should detect when a default new operator is used to allocate unsufficiently aligned memory, and issue a relevent user diagnostics. BTW, this issues can cause severe stability problems in AVX compilation, where 32-byte is the typical requirement for 256-bit AVX data types.
Dup. *** This bug has been marked as a duplicate of bug 36159 ***