我有两个类和主要的测试用例:
class Mytest{
private:
int var;
public:
Mytest(int);
};
inline Mytest::Mytest(int a){var=a;}
class ControlClass{
private:
Mytest* m;
public:
void f();
};
int main (void)
{
ControlClass controlobject;
controlobject.f();
return 0;
}
void ControlClass::f(){
Mytest w(5);
Mytest* c=&w;
m[0]=*c;// crash line
}
最后一行让我崩溃,我不知道为什么。 请帮帮我
答案 0 :(得分:4)
您没有为成员指针分配内存
Mytest* m;
它只是一个未初始化的指针,并且像这里一样解除引用
m[0]=*c;// crash line
导致未定义的行为(例如导致崩溃)。
您需要为m
分配一些内存,这里有一些选项
void ControlClass::f(){
Mytest w(5);
Mytest* c=&w;
m = new MyTest(); // Don't forget to delete in the destructor
// or whenever the resource isn't needed anymore
m[0]=*c;
}
void ControlClass::f(){
Mytest w(5);
Mytest* c=&w;
static Mytest x;
m = &x;
m[0]=*c;
}