The return from malloc is aligned for any type, so that's not a problem.
Generally in C++, ::operator new would be the preferred way. You might also consider using an Allocator, which gives some extra flexibility (like being able to switch allocators easily.