功能结束后的 SEG 故障 (C++)



当我运行特定程序时,我遇到了一个 seg 错误:11。 我觉得在我将系统升级到Mac OS X 10.9之前不存在这个问题,但可能我只是忽略了它。

无论如何,我的函数看起来像:

// this applies a warp to  the field given, and saves output.  simple!
void Apply(string warpName, string fieldName, bool conserve, string outName) {
  // get lon, lat dimensions of warp
  int noLongs = GetDimension(warpName, 3, "warp");
  int noLats = GetDimension(warpName, 2, "warp");
  int origNoLongs = noLongs, origNoLats = noLats;
  // read in params
  vector<double> params = ImportWarpFromNetCDF(warpName);
  // rescale field to warp's dimensions, and read in
  string tempName = "scaledField";
  ReScale(fieldName, tempName, noLongs, noLats);
  vector<vector<vector<double> > >inIntensities = ImportFieldFromNetCDF(tempName);
  RemoveFile(tempName);
  // just enter inIntensities for ref image, and 1 for lambda, to keep objective function happy
  ObjectiveFunction objective(inIntensities, inIntensities, conserve, 1, false);
  objective.setParameters(params);
  // output files
  ExportOutputToNetCDF(objective, outName);
  cout << "BAH?!" << endl;
}

最后的cout线只是检查我是否正确地到达了函数的末尾(我有)。 关于为什么这会在这里出现段错误的任何想法? 我很欣赏如果不看到各个函数调用的作用,可能很难分辨,因此如有必要,我将添加这些函数。

这实际上并不重要,因为这个函数是最后要调用的东西(所以 seg 错误不会中断任何东西),但我仍然宁愿深入了解它!

函数"之后"唯一发生的事情是析构函数调用。检查局部变量的所有析构函数。看起来ObjectiveFunction是唯一不是原始或标准库容器的局部变量,因此请检查ObjectiveFunction::~ObjectiveFunction()是否存在潜在问题。

相关内容

  • 没有找到相关文章

最新更新