Is there any guarantee of alignment of address return by C++'s new operation?-Collection of common programming errors

Most of experienced programmer knows data alignment is important for program’s performance. I have seen some programmer wrote program that allocate bigger size of buffer than they need, and use the aligned pointer as begin. I am wondering should I do that in my program, I have no idea is there any guarantee of alignment of address returned by C++’s new operation. So I wrote a little program to test

for(size_t i = 0; i < 100; ++i) {
    char *p = new char[123];
    if(reinterpret_cast(p) % 4) {
        cout