I am working on a project, where I need to generate a large Tree and delete it afterwards over and over again. But somehow the memory is not being freed after being deleted, so more and more memory is being used instead of reusing memory. Each node can have a different amount of children. I have tried implementing smart pointers, but I was unsuccessful. Is my tree being deconstructed properly or am I missing something?
class Node {
public:
short value;
std::vector<Node*> children;
virtual ~Node()
{
for (auto p : children) {
delete p;
}
}
}