Каждый раз в цикле вы выделяете некоторую память и устанавливаете pointer
, чтобы указать на нее.Когда вы это делаете, pointer
больше не указывает на последний фрагмент памяти, но все равно выделяется вашей программе.Когда вы звоните free(pointer)
, вы освобождаете только последний выделенный блок памяти.