Я проголосовал за плохую практику. Если вы действительно хотите присвоить значение, установите его на (void *) 0xdeadbeef. Однако сначала проверьте, что может делать ваш ЭЛТ. Приличный распределитель отладки установит освобожденную память в соответствии с шаблоном, который может вызвать бомбу при использовании указателя после того, как он был освобожден. Хотя это не гарантируется. Но тогда не изменение значения указателя - лучшее (и более быстрое) решение.
Некоторые считают это хорошей практикой, поскольку это предотвращает случайное обращение к памяти после того, как она была освобождена()ed.
Думаю, да ...
Когда вы закончите использовать часть менори, мы должны освободить () его. Это позволяет использовать освобожденную память для других целей .. .подобно дальнейшим вызовам malloc ().
Free принимает указатель на память в качестве аргумента и освобождает память, на которую указывает указатель ...
Надеюсь, это поможет ... :)
Хотя это и не повредит, но не всегда поможет. Проблема заключается в том, что легко существует несколько копий указателя, и, скорее всего, вы собираетесь установить только одну из них в NULL. Классический пример, когда это совсем не помогает:
void free_graph(graph *g)
{
...
free(g);
g = NULL; // not useful in this context
}
Проблема здесь в том, что вы устанавливаете в NULL только указатель, локальный для free_graph
, а указатель, хранящийся у вызывающего free_graph
, все еще будет иметь исходное значение.