在Visual Studio发布模式下生成时,所有内容都为Null/0/false 我用Visual Studio 2010和SFML在C++中做游戏,当我在调试模式上构建时,一切都很好。几天前,我尝试在发布模式下运行,效果也很好,但现在每次我尝试在发布模式下构建它时,它都会不断崩溃,并显示一条类似这样的消息:

在Visual Studio发布模式下生成时,所有内容都为Null/0/false 我用Visual Studio 2010和SFML在C++中做游戏,当我在调试模式上构建时,一切都很好。几天前,我尝试在发布模式下运行,效果也很好,但现在每次我尝试在发布模式下构建它时,它都会不断崩溃,并显示一条类似这样的消息:,c++,visual-studio-2010,pointers,sfml,C++,Visual Studio 2010,Pointers,Sfml,在HunterQuest.exe中的0x733b1ed7中未控制异常:0xC0000005:读取Ubition 0x10127459时的访问违规 看到“局部变量”窗口,看起来所有内容都指向0x00000000,或者是false或0 它在我的类游戏开始时崩溃,这是我从main使用的唯一类。几行之后,这是一个,当i=18时崩溃。即使我将其删除,当我将浮动重力设置为0.75时,它也会崩溃 for (int i = 0; i < 26; i++) { debug = new Debug()

在HunterQuest.exe中的0x733b1ed7中未控制异常:0xC0000005:读取Ubition 0x10127459时的访问违规

看到“局部变量”窗口,看起来所有内容都指向0x00000000,或者是false或0

它在我的类游戏开始时崩溃,这是我从main使用的唯一类。几行之后,这是一个,当i=18时崩溃。即使我将其删除,当我将浮动重力设置为0.75时,它也会崩溃

for (int i = 0; i < 26; i++)
{
    debug = new Debug();
    debug->Inicializar(fuenteMine, sf::Color::Black, 12);
    listaDebug.push_back(debug);
}

haPulsadoN = false;
haPulsadoP = false;
puedePulsarU = true;
juegoPausado = false;
puedeQuitarVida = false;

gravedad = 0.75;
tipoCam = 1;
nCuadrante = 1;
这是文塔纳的建造师:

Ventana::Ventana(int an, int al) 
{
    ancho = an;
    alto = al;

    ventana = new sf::RenderWindow(sf::VideoMode(ancho, alto), "Hunter's Quest");
}

相反,ancho为1024,alto为768,它们在构造函数中分别为13327667,当我使用F10调试逐行移动时,它直接从ancho=an跳转;to ventana=new,因此它不应用an和al…我不知道为什么…

当您将程序切换到发布模式时,是否链接到SFML的发布库?是的,我几天前链接了它们。我当时试过,效果很好,但我没有碰过它们。@Mehdow您无法正确调试经过优化的发布版本。这可能就是为什么您看不到变量,代码被跳过的原因。代码不再与源代码匹配,因为编译器优化了代码。如果要调试发布版本,请关闭优化并重新生成。@PaulMcKenzie我明白了,谢谢。但是,即使我不应该关注变量,我仍然不知道为什么它会在执行for或设置float时崩溃,以及可能出现的问题…@Mehdow没有人知道为什么你发布的一点点代码会崩溃。为什么不使用OutputDebugString或其他跟踪工具显示值,而不使用调试器?然后你的文章会更相关,因为你会真正知道真正的价值是什么。现在,您的帖子正在向阅读您帖子的其他人传递无效信息。因此,我建议您将程序更改为记录或显示这些值,然后编辑您的问题,向我们展示这些值的真实含义。
Ventana::Ventana(int an, int al) 
{
    ancho = an;
    alto = al;

    ventana = new sf::RenderWindow(sf::VideoMode(ancho, alto), "Hunter's Quest");
}