malloc()
принимает размер в байтах, а не количество элементов. Размер int
обычно составляет 4 байта, так что вы фактически выделяете только память для 2500 целых чисел. Вы выделяете array_size
байтов, в то время как вы должны выделять array_size * sizeof(int)
байтов.
Итак, ошибка будет исправлена на
input_array = (int*) malloc(array_size * sizeof(int));
P.S. Никогда не предполагайте, что вам известен размер int
или любого другого типа данных, так как он зависит от платформы. Всегда используйте sizeof()
.
P.P.S. Это действительно вопрос C, а не вопрос C ++. Если вы на самом деле используете C ++, вам следует рассмотреть возможность использования new
и delete []
вместо malloc()
и free()
или, что еще лучше, использовать std::vector
вместо массива, как указал Нил.