Меня учили на лекциях, что вызов free()
по указателю дважды действительно, очень плохой. Я знаю, что это хорошая практика, установить указатель на NULL
, сразу после его освобождения.
Однако я до сих пор не слышал никаких объяснений относительно того, почему это так. Насколько я понимаю, способ malloc()
работает, он должен технически отслеживать указатели, которые он выделил, и дал вам возможность использовать. Так почему же он не знает, был ли освобожден указатель, который он получает через free()
или нет?
Мне бы хотелось понять, что происходит внутри, когда вы вызываете free()
в ранее освобожденном месте.