我在C++中使用外部C库(libsvm)。我在我的类头文件中插入头文件使用使用指向类内结构的指针
extern "C"{
#include "svm.h"
}
此库包含一个名为svm_model的结构。它还包含一个函数,该函数给出它为struct svm_model分配的一些输入参数(malloc)空间并返回一个指向它的指针。功能是
svm_model *svm_train(input_parameters)
在我的代码(在C++)创建在我的类中的变量,它是一个结构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,我得到一个分段故障。发生这种情况的
m_data = svm_train(input_parameters);
,但如果我这样做
struct svm_model *test = svm_train(input_parameters);
m_data = test;
其实也正好,我注意到,即使我做
printf("hello: %p\n", m_data);
它还崩溃。因此,我怀疑在类中使用指向结构(已在别处定义)的指针时存在问题,尽管我没有在任何地方找到任何提示。我尝试在我的类构造函数中将它初始化为NULL,但不会更改任何内容。
任何帮助表示赞赏。
你确定你使用的函数分配内存吗? – Alon 2013-03-24 16:25:58
你可以创建一个[SSCCE](http://sscce.org/)吗? – 2013-03-24 16:27:47
我不知道这个问题是什么,但是这个'因此我怀疑在一个类中使用一个指向结构体的指针(在其他地方已经定义了)“是错误的。如果属实的话,C++将会非常无用。 – john 2013-03-24 16:43:04