C++ 带有QList元素的分段错误

C++ 带有QList元素的分段错误,c++,pointers,segmentation-fault,qlist,qfile,C++,Pointers,Segmentation Fault,Qlist,Qfile,在我的应用程序中,我有一个指向QFile对象的指针列表: QList<QFile*> files QList文件 此函数用于添加列表中的元素: void MumuServer::openFiles(){ QDir fileDir(QDir::toNativeSeparators(homeApp.path() + "/file")); std::cout << fileDir.path().toStdString() << std::endl

在我的应用程序中,我有一个指向QFile对象的指针列表:

QList<QFile*> files
QList文件
此函数用于添加列表中的元素:

void MumuServer::openFiles(){
    QDir fileDir(QDir::toNativeSeparators(homeApp.path() + "/file"));
    std::cout << fileDir.path().toStdString() << std::endl;
    if(fileDir.exists()){ // there is files directory in the application home dir
    std::cout << "fileDir exists" << std::endl;
    QStringList filesList = fileDir.entryList();
    for(int index = 0; index < filesList.size(); index++){
        QString fileName = filesList.at(index);
        if(this->blackListFile.contains(fileName)){
            continue;
        }
        QString path = fileDir.path() + "/" + fileName;
        std::cout << path.toStdString() << std::endl;
        QFile file(QDir::toNativeSeparators(path));
        if(file.exists()){
            files.append(&file);
        }
    }
    std::cout << this->files.size() << " files found" << std::endl;
}
void MumuServer::openFiles(){
QDir fileDir(QDir::tonativeparator(homeApp.path()+“/file”);

std::cout您放入“文件”列表中的对象已超出范围并被销毁。请使用“新建”操作符来分配它们。请确保在完成后将其删除,否则将导致内存泄漏

    QFile* file = new QFile(QDir::toNativeSeparators(path));
    if(file->exists()){
        files.append(file);
    }

你试过使用调试器吗?你不是在向量中添加本地变量的地址吗?@metalhead答案解决了我的问题
    QFile* file = new QFile(QDir::toNativeSeparators(path));
    if(file->exists()){
        files.append(file);
    }