C ++ возвращает указатель из функции. Значения потеряны

У меня есть следующее:

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) .

Кто-нибудь может объяснить, что происходит?

Спасибо.

5
задан nf313743 20 June 2011 в 13:06
поделиться