我正在使用 C++ 中的外部 C 库 (libsvm)。我使用在我的类头文件中插入头文件
extern "C"{
#include "svm.h"
}
该库包含一个名为 svm_model 的结构。它还包含一个给定一些输入参数的函数,它为 struct svm_model 分配(malloc)空间并返回指向它的指针。功能是
svm_model *svm_train(input_parameters)
在我的代码中(在 C++ 中),我在我的类中创建了一个变量,它是一个 struct svm_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,但没有改变任何东西。
任何帮助表示赞赏。