我在这么简单的代码中有很奇怪的行为。 只需要一个复制指针的模板类:
template <typename T_out, typename Class_type, typename T_in> class C_Ololo{
public:
T_out (Class_type::*cxfunc) (T_in);
Class_type * obj_ref;
T_out getRef(T_out (Class_type::*func2) (T_in), Class_type * __obj )
{
cout << "GetRef in...1" << endl;
cxfunc=func2; // Segmentation fault
cout << "GetRef in...2" << endl;
obj_ref=__obj; // Segmentation fault
}
};
然后只是一些裸课来调用前一个:
class C_Temp{
public:
dcxArray1D /* double */ func (double a){
dcxArray1D /* double */ temp(1);
return temp;
}
void getResult(){
cout << "GetResult" << endl;
C_Ololo <dcxArray1D /* double */ ,C_Temp,double> * ololo;
ololo = new C_Ololo<dcxArray1D /* double */ ,C_Temp,double>();
ololo->getRef(&C_Temp::func,this);
}
};
dcxArray1D只是:
typedef vector< complex<double> > dcxArray1D;
所以 - 问题是当我使用double
时,我现在到处都有dcxArray1D
,我没有任何问题。但是一旦我使用dcxArray1D
我有“分段错误”和free():第一类中的指针无效。
你可以帮一下......
答案 0 :(得分:0)
您要显示的代码中没有free
的来电。也没有致电malloc
。这一切都很可疑。根本原因几乎可以肯定是您在未使用free
分配的内容上调用malloc
。
为什么你甚至使用这种原始功能?如果您坚持使用标准C ++功能,整个问题可能会立即消失。