我有一个名为“ StatusInformation”的类,我想在其中将变量_status设置为true / false,但是我仅收到“ segmentation fault”。我认为_status不存在,因为我是从另一个类中调用它的。有人知道如何防止此错误吗?

StatusInformation.cpp

void StatusInformation::SetClientConnectStatus(bool status)
{
    _status = status;
}


StatusInformation.h

class StatusInformation
{
private:

    bool _status = false;

public:

    void SetClientConnectStatus(bool status);
};


CallerClass.cpp

_statusInformation = new StatusInformation();

_statusInformation->SetClientConnectStatus(true);


CallerClass.h

StatusInformation *_statusInformation;

最佳答案

编辑:该链接到您的代码只是给我缺少ArduinoProtocol的代码。

对我来说,这会编译出2条有关非静态数据成员初始化器的警告,然后运行正常。我真的不相信细分错误可能来自此代码。唯一可能导致这种情况的原因是

_statusInformation = new StatusInformation();


失败并返回0,使您的指针成为NULL指针。原因:

_statusInformation->SetClientConnectStatus(true);


等同于:

NULL->SetClientConnectStatus(true);


但这只有在您选择使用不罚球的情况下才会发生。您要特别指定。因此,实际上,该代码中唯一可能导致分段错误的事情是不会发生的。最坏的情况是将抛出std :: bad_alloc。

10-08 08:54