Причина, по которой работает первый, заключается в том, что компилятор может проверить, сколько элементов вы собираетесь назначить массиву, а затем выделить соответствующий объем памяти.
EDIT: теперь я понимаю, что вы просто пытаетесь обновить array1 новыми данными... Ответ Майка D решает это.