C ++内から外部Cライブラリ(libsvm)を使用しています。を使用してクラスヘッダーファイルにヘッダーファイルを挿入します
extern "C"{
#include "svm.h"
}
このライブラリには、svm_modelという構造体が含まれています。また、いくつかの入力パラメーターを指定すると、struct svm_modelに(malloc)スペースを割り当て、それへのポインターを返す関数も含まれています。機能は
svm_model *svm_train(input_parameters)
私のコード(C ++)では、クラスにstructsvm_modelポインターである変数を作成します。私のヘッダーファイルでは
class myClass
{
public:
int do_something();
private:
struct svm_model *m_data;
}
「do_something()」内で、次の方法でsvm_trainを正常に呼び出しました。
struct svm_model *test = svm_train(input_parameters);
しかし、結果をm_dataに書き込みたいときはいつでも、segmentation_faultが発生します。これは
m_data = svm_train(input_parameters);
しかし、私がそうする場合にも起こります
struct svm_model *test = svm_train(input_parameters);
m_data = test;
実は、そうしても気づきました
printf("hello: %p\n", m_data);
また、クラッシュします。したがって、クラス内の構造体(他の場所で定義されている)へのポインターの使用には問題があると思われますが、どこにもヒントは見つかりませんでした。クラスコンストラクターでNULLに初期化しようとしましたが、何も変更されません。
どんな助けでも大歓迎です。