0

这是取自 Marmalade sdk 教程 Kartz Game 的示例

//Initialise the memory manager.
MemoryManagerInit();
**{**
    CGame* game;
    **{**
        //create CGame object in 'Misc' memory bucket.
        CTempBucketSwitch b(MB_MISC);
        game = new CGame;
    **}**

    //run the game until it exits.
    game->Run();

    delete game;
**}**
//Terminate the memory manager, warning about any remaining allocations (these are leaks).
MemoryManagerTerm();

我不明白这个大括号在这里做什么?当我删除它时,程序崩溃

4

1 回答 1

2

大括号限制了 CTempBucketSwitch 的范围,因此它仅在分配游戏时持续。它可能会推动一个名为“Misc”的存储桶,并在它被破坏时弹出它。

崩溃可能是因为评论中提到的“杂项”存储桶无法处理 Run 函数中完成的所有分配。

于 2013-12-16T10:16:36.663 回答