Если я понимаю ваш вопрос: у вас есть массив char* arr[]
, который вы хотите полностью освободить
Я думаю, если вы хотите освободить его, вы должны сделать
int i = 0;
while (arr[i])
{
free(arr[i]);
arr[i] = NULL;
}
free(arr);
arr = NULL;
если вы использовали неправильный указатель char ** arr, вы также должны его освободить
Lmk, если этот ответ помогает
Причина установки указателя в NULL:
с использованием свободной функции на нулевом указателе ничего не делает ... (Это предотвращает дальнейшие сбои в вашем коде)
/! \ Но с помощью функции free для указателя, который уже был освобожден ранее (и не установлен в ноль) взломает sh вашу программу
Вызов бесплатного метода для указателя, который не был заблокирован, также вызовет sh вашу программу
Я не знаю, есть ли функция чтобы узнать, был ли указан указатель c на раздел кучи памяти
Также необходимо отметить, что метод Mallo c берет часть страницы памяти из раздела кучи и флаг как выделено
* 10 28 * Свободный метод
просто UNflag it Свободный метод никогда не заменяет биты в памяти на 0, он оставляет все как есть Это похоже на удаление файла на вашем рабочем столе он не заменяется на 0, чтобы стереть его, просто отметьте его как неиспользованный