指针向量在增量上崩溃程序

时间:2018-02-10 04:33:42

标签: c++ pointers vector crash iteration

我一直在做一个项目,坦白说我对C ++不是很有经验;但是我做了尽可能多的研究,尝试了四到五种不同的循环设置。

shared_ptr,unique_ptr,* this,this ..指针被复制并且稍后对其进行的更改未提交给向量,向量设法在向量时使程序崩溃增量。 int或iterator。

我可以确认save()函数不是问题的根源,因为Logger::Event()会在save()之后打印出来,但是在循环(函数)退出之后应该立即再次打印日志同样。当向量被确认(通过size())以具有多个项目时,它会在第一次迭代后崩溃。

这是我修剪过的DataFile.cpp:

vector<DataFile*> DataFile::allDataFiles;

void DataFile::saveAll(){
    Logger::Event("in SaveALL();");
    Logger::Event(to_string(allDataFiles.size()));
    for (vector<DataFile*>::iterator it = allDataFiles.begin(); it != allDataFiles.end(); it++){
        Logger::Event((*it)->_FILE);
        if ((*it)->saveOnClose) (*it)->save();
        Logger::Event("End of saveAll loop iteration.");
    }
}
DataFile::DataFile(string fn, bool r, bool soc){
    //...
    allDataFiles.push_back(move(this));
}

来自我的DataFile.h

public:
        DataFile(std::string _fileName, bool readNow = true, bool saveOnClose = true);
        bool save();
        static void saveAll();
private:
    static std::vector<DataFile*> allDataFiles;

我知道我没有使用save()的返回值,这是为了将来使用。我目前没有使用调试器,但使用最新版本的MinGW和MSYS来使用NetBeans从我的Windows 8笔记本电脑制作。正如我之前所说的,上面的输出如下。

EV 19:04:34 Event:   in SaveALL();
EV 19:04:34 Event:   2
EV 19:04:34 Event:   tEST.aconf
EV 19:04:34 Event:   End of saveAll loop iteration.

RUN FAILED (exit value -1,073,741,819, total time: 4s)

0 个答案:

没有答案