Итак, чтобы лучше понять новый/удалить (действительно, чтобы доказать себе небольшими примерами, почему виртуальные деструкторы необходимы для интерфейсов), я хочу понять утечки памяти, чтобы я мог бояться их. Но мне нелегко пропустить мою утечку, так сказать; на самом деле, мне тоже сложно с новым/удалить тоже.
Вот моя самая простая версия:
int* P1 = new int(43);
cout<<"P1 = "<<P1<<endl;
cout<<"*P1 = "<<*P1<<endl;
delete P1;
cout<<"P1 = "<<P1<<endl;
cout<<"*P1 = "<<*P1<<endl;
Отпечатки:
P1 = 0xcc0340
*P1 = 43
P1 = 0xcc0340
*P1 = 43
У меня было что-то более сложное внутри класса, но этот пример иллюстрирует мой отказ. Я думал, что delete берет указатель и освобождает его память, тем самым аннулируя указатель или, по крайней мере, то, на что он указывает? Я должен делать что-то очень простое, очень неправильное.