Whilst the C standard definition of malloc may not guarantee appropriate alignment for anything, I think you will find that in practice, malloc from glibc and MS visual studio C library will guarantee at least 8 byte alignment, if not 16 byte alignment.
If you want to ensure alignment, then you should write a "aligned malloc" - it's pretty simple (although you have to keep track of a second pointer!):
void *mallocAligned(size_t size, size_t align, void **freePtr)
*freePtr = malloc(size + align);
void *p = ((char *)*freePtr) + (int) (*freePtr) + (align-1) & ~(align-1);
char * myptr = mallocAligned(400, 64, &freePtr);