我有一个非常简单的程序,如下所列,它从.mat
文件(来自 Matlab 的数据文件)中读取一个值并打印出来。出于某种原因,退出 main() 后出现段错误- 我可以运行gdb my_program
并单步执行整个方法,但一旦完成,我在 Matlab 相关库(的依赖项)中main()
输入一些方法,该方法会引发段错误.libmwfl.so
libmat.so
我对 C 编程完全陌生,但有些阅读我怀疑我要么以某种方式破坏了堆栈,要么两次调用了一些析构函数。但是,我在我的代码中看不到任何这些 - 正如我所说,我可以使用调试器单步执行我的代码而不会出现问题。
我在这里做错了什么?
#include <stdlib.h>
#include <stdio.h>
#include <mat.h>
int main(int argc, char *argv[]) {
double value;
MATFile *datafile;
datafile = matOpen("test.mat", "r");
mxArray *mxv;
mxv = matGetVariable(datafile, "value");
value = *mxGetPr(mxv);
mxFree(mxv);
matClose(datafile);
printf("The value fetched from the .mat file was: %f", value);
return 0;
}