以下に示す非常に単純なプログラムがあります。このプログラムは、.mat
ファイル(Matlabのデータファイル)から値を読み取り、それを出力します。何らかの理由で、 main()を終了した後にsegfaultエラーが発生します-メソッド全体を実行gdb my_program
してステップスルーできますが、終了するとすぐに、Segfaultをスローするmain()
Matlab関連ライブラリ(libmwfl.so
の依存関係)にメソッドを入力しますlibmat.so
。
私はCプログラミングにまったく慣れていませんが、読んでいると、スタックが破損しているか、デストラクタを2回呼び出しているのではないかと思われます。ただし、コードにそれらのいずれも表示されません。前述のように、デバッガーを使用してコードを問題なくステップ実行できます。
私はここで何が間違っているのですか?
#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;
}