У меня есть класс со списком указателей на объекты того же класса в качестве атрибута (Children).У меня проблема в том, что когда я создаю объект этого класса, добавляю к нему потомки и затем пытаюсь удалить его, он не освобождает память (судя по системному монитору).Я использую Ubuntu с g ++.
Следующий код хорошо иллюстрирует мою проблему.Он создает объект, добавляет к нему десять миллионов детей и затем удаляет его.Использование памяти увеличивается с 1,1 до 1,7 ГБ при выполнении программы и застревает там даже после удаления объекта.
anyone Кто-нибудь имеет представление о том, что происходит?много.
class UDVertex
{
public:
int ID;
list<UDVertex *> Children;
};
void GetChildren(UDVertex * rootVT);
int main()
{
UDVertex * MyVertex;
MyVertex = new UDVertex;
MyVertex -> ID = 0;
GetChildren(MyVertex);
while( ! MyVertex -> Children . empty() )
{
delete MyVertex -> Children . front();
MyVertex -> Children . pop_front();
}
delete MyVertex;
std::cout << "Press enter to continue...";
std::cin.get();
return 0;
}
void GetChildren(UDVertex * rootVT)
{
UDVertex * Child;
int i;
for (i = 0; i < 10000000; i++)
{
Child = new UDVertex;
Child -> ID = i + 1;
rootVT -> Children . push_back ( Child ) ;
}
}