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