我在 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];
}
}