Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/140.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 尝试访问标头声明的成员时出现SEGFULT_Android_C++_Cocos2d X_Cocos2d X 3.0 - Fatal编程技术网

Android 尝试访问标头声明的成员时出现SEGFULT

Android 尝试访问标头声明的成员时出现SEGFULT,android,c++,cocos2d-x,cocos2d-x-3.0,Android,C++,Cocos2d X,Cocos2d X 3.0,我有一个Cocos2d-X3.14项目,我正在尝试将其迁移到3.15,它在iOS上运行得非常好,但在Android上却不行。3.14在这两个方面都很好 在运行3.15迁移版本时,当使用this->member访问标头中声明的成员时,我会遇到一个segfault。如果我添加局部变量,它就可以正常工作 Hpp文件: class GameBoard : public Layer { public: static cocos2d::Scene* createScene(); virtu

我有一个Cocos2d-X3.14项目,我正在尝试将其迁移到3.15,它在iOS上运行得非常好,但在Android上却不行。3.14在这两个方面都很好

在运行3.15迁移版本时,当使用this->member访问标头中声明的成员时,我会遇到一个segfault。如果我添加局部变量,它就可以正常工作

Hpp文件:

class GameBoard : public Layer
{
public:

    static cocos2d::Scene* createScene();
    virtual bool init();
    CREATE_FUNC(GameBoard);

    // background
    Sprite* background;
    void setupBackGround();

    ...
}
Cpp文件:

void GameBoard::setupBackground() {

    cocos2d::Size visibleSize = Director::getInstance()->getVisibleSize();
    Vec2 origin = Director::getInstance()->getVisibleOrigin();

    if (this->background == NULL) {
         doStuff();
    }
}

“this->background”行崩溃。有人知道为什么会发生这种情况吗?

结果表明,在Cocos2d-x 3.15中(至少在我们的项目中),在场景初始化之前调用了“applicationResized”函数。再加上这个applicationResized函数中的NULL检查中使用的指针实际上都没有初始化为NULL,这会导致通过false检查


从这个意义上讲,@πάνταῥεῖ 是正确的,'这'(游戏板)当时没有正确实例化,但指向随机内存。

我认为它没有在这个->背景上崩溃。我猜它是在doStuff上崩溃,可能会访问未初始化的背景。
是在那个时候指向某个适当实例化的实例吗?或者,您正在对已删除的
GameBoard
对象调用
GameBoard::setupBackground
吗?@user1438832该行正在崩溃。引擎允许您使用函数sprite::create(“mySprite.png”)初始化未初始化的sprite指针;通过一些额外的测试,它完全崩溃在被检查为null的成员变量上。@πάνταῥεῖ 通常,cocos2d-x管理GameBoard类的初始化。“this”绝对不是空的。但您确实给了我在示例项目中尝试相同操作(访问成员)的想法(仅使用局部变量)