Огромное спасибо! Сейчас пока разбираюсь с еще одной возможной утечкой, хотя это скорее даже не утечка, а исключительная ситуация, вкратце опишу свою мысль:
Имеется функция void ScriptEngineModel::updateModel()
, в которой используется следующее выражение m_rootNode->clear();
. Но т.к. m_rootNode создается в модели, которая хранится в классе типа Singlton, то при удалении ReportEngine и PreviewReportWidget m_rootNode с дочерними узлами остается в памяти, до завершения приложения. Но также был замечен рост кол-ва ScriptEngineNode почти с каждым новым циклом, а это уже становится похожим на утечку, использовал тот же тест что и выше, и проверял подобным способом:
static int countScriptEngineNode = 0;
ScriptEngineNode::ScriptEngineNode( const QString &name, const QString &description, NodeType type, ScriptEngineNode *parent, const QIcon &icon )
: m_name( name ), m_description( description ), m_icon( icon ), m_type( type ), m_parent( parent )
{
qDebug() << "create ScriptEngineNode " << this << ++countScriptEngineNode;
}
ScriptEngineNode::~ScriptEngineNode()
{
qDebug() << "delete ScriptEngineNode" << this << --countScriptEngineNode;
for ( int i = 0; i < m_childs.count(); ++i )
{
delete m_childs[i];
}
}