Сколько выделяется памяти под массив в C++?
Я предполагаю, что выделится ровно столько, сколько элементов перечислено в списке
Совершенно верно за одним исключением. Памяти может выделятся чуть больше из-за выравнивания. Доступ к памяти по выровненным адресам намного быстрее происходит, из-за чего эффективнее например выделить дополнительный байт в начале (что бы адрес массива стал кратным 2/4/8/16 (смотря какое выравнивание в архитектуре используется).
sizeof(type) * N, где type - тип, а N - количество элементов, плюс к этому числу добавляется количество байт до такого числа, чтобы оно было кратно выравниванию, как сказали выше.
Проще говоря, занимает столько, сколько занимает N таких элементов ( для int -  4N байт ) и это число округляется в верхнюю сторону до числа, чтобы было кратным некоторому числу K. Это число K и есть выравнивание, задается в настройках компилятора.
Нужно выравнивание, чтобы процессору проще вычислять было. Он гораздо проще работает с числами кратными степени двойки.