当我尝试空指针时出现分段错误

Segmentation fault when i try to NULL pointer

本文关键字:分段 错误 空指针      更新时间:2023-10-16

当代码重新指向 NULL 指针时,我在调试器中遇到分段错误错误。

此函数执行错误:

void Player::nullActive()
{
    activeCharacter = NULL;
}

activeCharacter 只是 Character 类的一个指针。

另外,这是玩家类:

class Player
{
    public:
        Player(unsigned int accID, std::string aID, bool isBanned); //constructor, allow only create object id-s one time
        ~Player();
        std::string getAtheriusID(); //return account id
        unsigned int getAccountID(); //return atherius id
        boost::ptr_vector<Character> characters;
        bool isBanned();
        bool hasActiveCharacter();
        void nullActive();
        void setActiveCharacter(Character * character);
        void setConnection(CSConnection * con);
        CSConnection * getConnection();
        Character * getActiveCharacter();
        unsigned int atheriusCoins;
    protected:
        unsigned int accountID; //account unique id
        std::string atheriusID; //account name / atherius id
        bool banned;
    private:
        CSConnection * connection;
        Character * activeCharacter = NULL;
};

和调试器的输出:

程序接收信号SIGSEGV,分段错误。在 F:\永恒英雄\服务器\src\game\src\玩家.cpp:36 继续... 程序接收信号SIGSEGV,分段错误。在 F:\永恒英雄\服务器\src\game\src\玩家.cpp:36 继续... [下级 1(进程 11552)以代码 030000000005 退出]调试器 已完成,状态为 0

只是将其从评论移动到答案,因为不太可能有任何其他;)

据我所知,activeCharacter 是一个成员变量,到执行此函数时,此指针已损坏/为空。