Мой C++ довольно ржавый, так что теперь, что я начал использовать его для проекта хобби я получил «уровень вверх» -Снова ..Это приведет к утечке памяти?
#include "stdafx.h"
#include "stdlib.h"
class a
{
public:
void call() { printf("CALL called\n"); }
};
class b
{
public:
b() { this->pointer = new a; }
void call() { this->pointer->call(); }
private:
a* pointer;
};
int _tmain(int argc, _TCHAR* argv[])
{
b t;
t.call();
system("PAUSE");
return 0;
}
Будет ли это результат утечки памяти? И как я могу удалить указатели, если программа решит, что они больше не нужны?
Будет ли «удалить t» достаточно или это также вызовет утечку памяти?
Этого недостаточно. Предоставляя совет кому-либо, у которого явно нет опыта строительства/разрушения и указателей RAW, вы должны попытаться убедиться, что они не становятся для них опасными. В этой ситуации минимум должен также включать отключение конструктора копирования и оператора присваивания (или объяснить, как правильно их определить). – 2010-12-01 02:58:29