1

我在 Linux ( CentOS )下运行我的程序时遇到问题。代码没有内存泄漏。有时,程序会因"Segmentation fault". 我已经在我的代码中添加了控制输出,当它崩溃时,程序每次都在执行相同的代码(这是正确的,只需从配置文件加载数据,始终保持不变)。如果我再次立即运行程序,则不会发生崩溃"Segmentation fault"并且程序运行良好。

编辑:

我的配置文件阅读器。INIHandler.cpp

从那些图书馆,我打电话给

IniHandler ini(mapInfoName);

MyStringAnsi mapFileName = ini.ReadString("global", "map_file");
this->mapWidth = ini.ReadInt("global", "map_width");
this->minX = ini.ReadFloat("global", "minX");

编辑 2

上面的代码没问题。我发现,该错误发生在这段代码的某处:

std::vector<MyStringAnsi> inputFiles;
MyStringAnsi mapFile = "";
MyStringAnsi output = "";
MyStringAnsi coordinatesDataFileName = "";
MyStringAnsi outputCache = "";
MyStringAnsi type = "data";

for (int i = 1; i < argc; i++)
{
    if ((argv[i][0] == '-') && (argv[i][1] == 'm'))
    {
        mapFile = argv[i + 1];
    }

    if ((argv[i][0] == '-') && (argv[i][1] == 'd'))
    {
        inputFiles.push_back(argv[i + 1]);
    }

    if ((argv[i][0] == '-') && (argv[i][1] == 'o'))
    {
        output = argv[i + 1];
    }

    if ((argv[i][0] == '-') && (argv[i][1] == 'f'))
    {
        coordinatesDataFileName = argv[i + 1];
    }

    if ((argv[i][0] == '-') && (argv[i][1] == 'c'))
    {
        outputCache = argv[i + 1];
    }

    if ((argv[i][0] == '-') && (argv[i][1] == 't'))
    {
        type = argv[i + 1];
    }
}
4

0 回答 0