Удаление объекта - delete в C++
Память под объект в куче не освобождается сама - после работы адрес нужно вернуть системе оператором delete.
Команда delete p уничтожает объект по адресу
p и освобождает эту память. Запишем класс User:
#include <iostream>
#include <string>
class User {
public:
std::string name;
int age;
User(std::string name, int age) : name(name), age(age) {}
};
Создадим объект через new, выведем имя и удалим его:
int main() {
User* p = new User("john", 21);
std::cout << p->name << "\n";
delete p;
return 0;
}
После delete указатель больше не должен
использоваться для доступа к полям - объект
уже уничтожен. Запишем класс Counter:
#include <iostream>
class Counter {
public:
int value;
Counter(int value) : value(value) {}
};
Создадим объект через new и удалим его через delete:
int main() {
Counter* p = new Counter(10);
std::cout << p->value << "\n";
delete p;
return 0;
}
Создайте объект Book через new,
выведите название через указатель и освободите
память через delete.
Создайте объект User оператором new User(1),
выведите возраст и удалите объект.