C++指针分配错误

C++ Pointer assignment error

本文关键字:错误 分配 指针 C++      更新时间:2023-10-16

我有这两个类和一个主要的测试用例:

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
}

最后一行让我崩溃了,我不知道为什么。请帮我

您从未为成员指针分配内存

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;
}