使用向量从文件读取数据时,在C ++中存在损坏风险

时间:2013-12-12 01:53:11

标签: c++ qt file-io stdvector

更新:我被调试器的最新错误日志误导了。我必须手动禁用部分代码才能找到错误生成行。


您能不能给我一个建议,以下部分代码会导致(有时)堆损坏?

我在Windows上使用Qt,这种问题对我来说并不简单,因为没有Valgrind for Windows。

我在某些文本文件中有数值。它们是由白色字符分隔的3-4位整数(一个文件中最多250个)。在“调试”模式下,当我使用12个文本文件时,这在某些方面完美无瑕。我用一些更大的文本文件扩大了我的数据库,现在它更频繁崩溃。在“释放”模式下,应用程序大部分时间以代码-1073741819退出。

也许这种做法根本不合适?如果是这样,有哪些替代方案?

filesTable[0].open(some_directory);
...

//other files...
...
for(int i=0;i<number_of_files;i++)
{
    vector<string> data_vector;
    string number;
    files[i] >> number;
    while(files[i])
    {
        if (number.size() > 0)
            data_vector.push_back(number);
        files[i] >> number;
    }
    files[i].close();
    int size = data_vector.size();
    int point[size];
    for(int j=0; j<size;j++)
        point[j]=atof(data_vector[j].c_str());
    data_vector.clear();
}

0 个答案:

没有答案