围绕变量“数据”的堆栈已损坏
问题描述:
我正在使用SFML。我正试图在屏幕上写一些文字。每当我关闭应用程序,我得到“堆栈变量”数据“已损坏”的错误,但我没有看到任何代码错误。围绕变量“数据”的堆栈已损坏
#include <SFML\Graphics.hpp>
using namespace sf;
int main() {
RenderWindow win(VideoMode(640, 480), "", Style::None);
Font lucida;
lucida.loadFromFile("lucon.ttf");
Text data;
data.setCharacterSize(12);
data.setColor(Color(180, 180, 180));
data.setFont(lucida);
data.setPosition(Vector2f(10, 10));
data.setStyle(Text::Bold);
data.setString("test");
Event evt;
double dt = 0.f;
Clock clock;
double dwticks = clock.getElapsedTime().asSeconds();
double dwnewticks = 0.f;
while (win.isOpen()) {
if (win.pollEvent(evt)) {
if (Keyboard::isKeyPressed(Keyboard::Key::Escape)) win.close();
}
else {
dwnewticks = clock.getElapsedTime().asSeconds();
dt = dwnewticks > dwticks ? (dwnewticks - dwticks)/4000.f : 0.f;
dwticks = dwnewticks;
win.clear(Color(0, 0, 0));
win.draw(data);
win.display();
}
}
return 0;
}
答
改变这一行:
if (Keyboard::isKeyPressed(Keyboard::Key::Escape)) win.close();
要:
if (Keyboard::isKeyPressed(Keyboard::Key::Escape)){
win.close();
break;
}
+0
认为它会有所帮助,但事实并非如此。同样的错误。 – mentor93 2015-02-14 23:54:00
邮件是否正确显示? – Leo 2015-02-12 16:30:16
是的,信息显示正确。 – mentor93 2015-02-13 14:35:23
不是在main()中填充大量代码,而是重构到完成工作的小工作者函数。现在,您可以将错误本地化,并且在运行之前您不必等到程序退出后再发出警告。 – 2015-02-14 09:21:23