На языке Си вы не можете и не можете «выпускать» указатели. Указатели - это обычные скалярные переменные. Вы ничего не можете с ними сделать с точки зрения «освобождения» или чего-то подобного.
То, что можно «освободить», это память, на которую указывает указатель . Но в C вам нужно только освободить память, которая была явно выделена на malloc
/ calloc
/ realloc
. Такая память освобождается путем вызова free
.
Обратите внимание, что в вашей программе может быть несколько (сто) указателей, указывающих на один и тот же блок выделенной памяти. В конце концов вам придется освободить этот блок памяти. Но независимо от того, сколько указателей вы указали на этот блок, вы должны освободить этот блок памяти ровно один раз. Вы несете ответственность за то, чтобы выпустить его. И вы обязаны убедиться, что вы выпустили его ровно один раз. Я говорю вам это только для иллюстрации того, что вы выпускаете блок памяти 1016 *, а не указатели.
В вашем примере ваш указатель указывает на блок памяти, который никогда не был выделен какой-либо из вышеупомянутых функций. Это сразу означает, что вам не нужно ничего выпускать.