Java 用libgdx设置新屏幕会使我的游戏崩溃吗?

Java 用libgdx设置新屏幕会使我的游戏崩溃吗?,java,android,android-studio,libgdx,scene2d,Java,Android,Android Studio,Libgdx,Scene2d,因此,我似乎一辈子都不明白为什么设置新屏幕会使我的游戏崩溃,我收到的日志信息似乎很直截了当,但我就是找不到它的根源,所以我希望有人能在这里帮助我。。这是日志消息 java(1240,0x1e59cb000) malloc: *** error for object 0x7f8cf4ad2208: incorrect checksum for freed object - object was probably modified after being freed. *** set a break

因此,我似乎一辈子都不明白为什么设置新屏幕会使我的游戏崩溃,我收到的日志信息似乎很直截了当,但我就是找不到它的根源,所以我希望有人能在这里帮助我。。这是日志消息

java(1240,0x1e59cb000) malloc: *** error for object 0x7f8cf4ad2208: incorrect checksum for freed object - object was probably modified after being freed.
*** set a breakpoint in malloc_error_break to debug
这是调用setScreen方法的代码,我不知道我在哪里修改一个释放的对象,希望有人能在这个问题上给我一些启发

public class GameScreen implements Screen {
//..
public void updateWorld(float deltaTime){

        switch (gameState) {
            case START:
                //..
                break;

            case RUNNING:
                //..
                break;

            case GAMEOVER:
                System.out.println("called");
                //..
                fishy.setGRAVITY(-20);
                fishy.update(deltaTime);

                if (gos == null) gos = new GameOverState(game);
                gos.compareScore(curr_ig_score);
                backgroundMusic.pause();
                if (!gameOver.isPlaying()) gameOver.play();
                fishy.setMOVEMENT_X(0);

                updateGOSButtons();
                break;
            case PAUSED:
                //...
                break;
        }

        //..
    }

public void updateGOSButtons() {
            if (gos.isGoButtonClicked()) {
                gameOver.stop();
                backgroundMusic.play();
                dispose();
                game.setScreen(new GameScreen(game));
            }

            if (gos.isHomeButtonClicked()) {
                gameOver.stop();
                backgroundMusic.play();
                dispose();
                game.setScreen(new MainMenuScreen(game));
            }

            Gdx.input.setInputProcessor(gos.getStage());
    }
}

来自另一个线程:

发生的情况如下所示:

1) 您将释放一个对象两次

2) 您正在释放从未分配的指针

3) 您正在通过以前指向的无效指针进行写入 已释放的对象


最好的方法是在:
malloc\u error\u break
方法中放置一个断点,然后查看发生了什么。如果没有更多的信息,我们就无法提供帮助

> P>我最近遇到了一个类似的问题,这是因为我在渲染周期中间改变了屏幕。发生的事情是,当前屏幕将被隐藏并处理,然后它将尝试使用舞台和其他已处理的对象渲染它。我不得不将set screen方法移到render调用的末尾,问题就解决了。

您的dispose()方法是什么?原来我没有处理在另一个线程中运行的阶段,谢谢!