У меня есть вопрос относительно свободный() в С.мы можем использовать указатель, освобожденный ранее?
Предположим, что у меня есть указатель на какой-то структуры (скажем, узел * 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() находятся в цикле (поэтому вместо второго значения (node) во втором аргументе это фактически n * sizeof (node), где n продолжает увеличиваться .. и последнее место в этом результирующем массиве записывается с новыми данными), где память, на которую указывает ptr, продолжает увеличиваться до тех пор, пока цикл не закончится, и в этот момент мне не нужны данные в памяти, на которую указывает ptr, поэтому я думаю лучше всего освободить его. Теперь все это вложен в еще один более крупный (внешний) цикл.
Большое спасибо за вашу помощь
Почему бы не написать свой вопрос на основе кода, который вы планируете использовать? Похоже, вы настолько упростили свой код, что на самом деле нет никаких сомнений относительно его законности. –