Я строю набор суффиксов (к сожалению, нет времени для правильной реализации дерева суффиксов) для набора из 10 символов.Строки, которые я хочу проанализировать, будут довольно длинными (до 1М символов).Дерево строится без каких-либо проблем, однако я сталкиваюсь с некоторыми, когда пытаюсь освободить память после того, как с ней покончено.
В частности, если я настроил свой конструктор и деструктор как таковой (гдеCNode.child - это указатель на массив из 10 указателей на другие CNodes, а count - это простое целое число без знака):
CNode::CNode(){
count = 0;
child = new CNode* [10];
memset(child, 0, sizeof(CNode*) * 10);
}
CNode::~CNode(){
for (int i=0; i<10; i++)
delete child[i];
}
При попытке удалить корневой узел я получаю переполнение стека.Возможно, я ошибаюсь, но я вполне уверен, что это происходит из-за слишком большого количества вызовов деструкторов (каждый деструктор вызывает до 10 других деструкторов).Я знаю, что это неоптимально как по пространству, так и по времени, однако предполагается, что это быстрое и грязное решение повторяющейся проблемы с подстрокой.
tl; dr :как можно освободить память, занятую очень глубоким деревом?
Спасибо, что уделили время.