У меня есть вопрос относительно free () в C.
Предположим, у меня есть указатель на некоторую структуру (скажем, node * ptr) .. после освобождения я могу инициализировать его в NULL и указать в каком-то новом месте с помощью malloc () или realloc ()?
Например:
node *ptr=NULL;
ptr=realloc(ptr,sizeof(node)); //works exactly like malloc
/* Do some operations on ptr */
free(ptr);
ptr=NULL;
ptr=realloc(ptr,sizeof(node));
Это действительно, или это создаст проблему.
Причина, по которой я использовал realloc вместо malloc, заключается в том, что все мои вызовы realloc () находятся в цикле (поэтому вместо sizeof (node) во втором аргументе это фактически n * sizeof (node), где n продолжает увеличиваться ... и последнее место в этом результирующем массиве записывается с новыми данными), где память, на которую указывает ptr, продолжает увеличиваться до тех пор, пока цикл не завершится, и в этот момент мне не требуются данные в памяти, на которые указывает ptr, поэтому я думаю, что это Лучше всего освободить это. Теперь все это вложено в еще один больший (внешний) цикл.
Большое спасибо за вашу помощь