В ответ на заголовок вопроса «Что происходит с неиспользуемой памятью в C ++», память помечается как нераспределенная диспетчером памяти, но, вероятно, не возвращается в операционную систему в этот момент (если вообще когда-либо) для эффективности.Отмена осуществляется с помощью ключевого слова delete
. Для вашего конкретного примера (поспешно сшитого вместе):
Предположим, такой узел, как
struct Node
{
Node* next;
} head;
//Later...
Node* pred = head; //Where head is the start of the list
while((pred->next != NULL) && (pred->next != c))
{
pred = pred->next;
}
Node* toDelete = pred->next;
Node* newSuccessor = toDelete->next;
/*
This is the moment when the memory is considered freed.
free() should only be used if the node was allocated with malloc()
*/
delete toDelete;
pred->next = newSuccessor;