我使用 f2c 转换器 (f2c) 将一些旧的 Fortran 代码转换为 C,并在 Windows 7(64 位)上创建了 Visual Studio 10 解决方案。我还必须将我的 C++ 程序(test.cpp,包含我的 main 函数)与 f2c 库(使用 nmake 在我的系统上构建)链接起来。
程序运行,但是一旦到达 main 函数的末尾,我就会收到以下 Debug 错误:
Stack around the variable 'qq' was corrupted
Stack around the variable 'pf' was corrupted
Stack around the variable 'ampls' was corrupted
我想知道这是否可能是由于 f2c 转换器在转换后的 C(来自 Fortran)文件中进行的“更正”:
/* Parameter adjustments */
--x1;
--xabs;
--ximag;
--xreal;
--work4;
--work3;
--work2;
--work1;
--ampls;
--pf;
--qq;
--tri;
这似乎有点奇怪,因为所有这些变量都是 C 数组,而且我认为 f2c 程序只是在做一些指针运算,以便数组中的索引 0 变为索引 1,与 Fortran 类似。
我不知道这是否也可能是由于转换后的代码访问尚未分配的数组元素时出现问题。
调试此错误并修复它的最佳方法是什么?