Dropping support of x86 in favor to x64 might solve a lot of headaches
x64 aligns data by 16 bytes, x86 - by 8.
The default alignment is entirely implementation-defined. There is no guarantee that allocations are 16-byte aligned just because you're on the x64 architecture. There are absolutely platforms that use 8-byte new/malloc alignment even when compiled to x86_64.
OSX/iOS - guaranteed 16-byte alignment no matter which architecture is targeted.
Microsoft - guaranteed 16-byte alignment on x64, 8-byte alignment on x32.
Linux/Android - guaranteed 8-byte alignment only.
Other platforms - not sure off the top of my head.