I want to create a buffer variable that starts from an even address in memory. Does the __align achieve this?

What I found states that:-
"Use the __align specifier to explicitly specify alignment and padding when declaring or defining data items."

but it doesn't explicitly mention abt the starting address.
So if I do something like this:-

Code:
__align(4) uint16 my_buffer[MAX_BUFFER_SIZE];
Can I safely say that my_buffer starts from an even address and is aligned every word-size with 2-bytes padded?

I'm new to this specifier so pardon any confusion I may cause in my description.