Там проверяется есть ли свободное место в массиве, если нет, то аллоцируется новый с размером в два раза больше исходного, копируется из исходного в новый, и добавляется
Это отличается от описанного мной только тем, что якобы аллоцируется новый массив с памятью в два раза больше исходного, хотя это не так