繁体   English   中英

C ++指针分配错误

[英]C++ Pointer assignment error

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM