У меня есть следующее:
void Class1::method()
{
QStringList* file_list;
collect_file_paths(file_list); //Sends pointer to the method below
}
void Class1::collect_file_paths(QStringList* file_list)
{
//Gather file paths
DirectorySearch ds;
connect(&ds, SIGNAL(updateStatus(QString)), this, SLOT(onStatusUpdate(QString)));
file_list = ds.get_file_names(_strPath); //Returns a pointer of QStringList
}
QStringList* DirectorySearch::get_file_names(QString path)
{
QStringList *file_names = new QStringList;
traverse(path, file_names);
compare_existing(file_names);
return file_names; //returning pointer address
}
Что происходит, так это то, что адрес памяти, возвращаемый с get_file_names()
, теряется / удаляется, когда я покидаю область действия Class1::collect_file_paths()
. Насколько я понимаю, QStringList *file_names = new QStringList;
в классе DirectorySearch теперь в куче памяти. Таким образом, это должно быть оставлено в куче, пока я не назову delete
, то есть это никогда не выходит за рамки. Однако, как упоминалось выше, адрес / значения QStingList
теряются, когда я возвращаюсь к Class1::method()
из collect_file_paths(file_list)
.
Кто-нибудь может объяснить, что происходит?
Спасибо.