指针问题(仅在发布版本中)

Dan*_*ran 3 c++ visual-c++-2010

不确定如何描述这个,但在这里我去:

出于某种原因,当试图创建我的游戏的发布版本进行测试时,它的敌人创建方面是行不通的.

Enemies *e_level1[3];
e_level1[0] = &Enemies(sdlLib, 500, 2, 3, 128, -250, 32, 32, 0, 1);
e_level1[1] = &Enemies(sdlLib, 500, 2, 3, 128, -325, 32, 32, 3, 1);
e_level1[2] = &Enemies(sdlLib, 500, 2, 3, 128, -550, 32, 32, 1, 1);
Run Code Online (Sandbox Code Playgroud)

多数民众赞成我如何创造我的敌人.在调试配置中工作正常,但是当我切换到发布配置时,似乎没有正确初始化敌人.

对我来说,这似乎有点奇怪,它在调试中工作,但不是在发布,任何帮助赞赏的主要是我做错了什么.

par*_*mar 5

e_level1[0] = &Enemies(sdlLib, 500, 2, 3, 128, -250, 32, 32, 0, 1);
Run Code Online (Sandbox Code Playgroud)

不会做你认为它做的事情.如果是构造函数调用,则会创建一个临时函数,并将其地址存储在e_level1 [0]中.初始化e_level1 [1]时,可能已经调用了e_level1 [0]析构函数.

你可能想做

Enemies* e_level1[3] = 
    {
        new Enemies(sdlLib, 500, 2, 3, 128, -250, 32, 32, 0, 1) , 
        new Enemies(sdlLib, 500, 2, 3, 128, -325, 32, 32, 3, 1) , 
        new Enemies(sdlLib, 500, 2, 3, 128, -550, 32, 32, 1, 1)
    };
Run Code Online (Sandbox Code Playgroud)

  • 没有!不要那样做!如果任何一个`new`s失败那么你将泄漏内存. (3认同)