【问题标题】:Stack around variable 'data' was corrupted围绕变量“数据”的堆栈已损坏
【发布时间】:2015-02-11 19:10:25
【问题描述】:

我正在使用 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;
}

【问题讨论】:

  • 消息是否正确显示?
  • 是的,消息显示正确。
  • 与其在 main() 中填充大量代码,不如重构为完成工作的小工作函数。现在您将错误本地化,幸运的是,您不必等到程序退出才能收到警告。

标签: c++ text fonts stack sfml


【解决方案1】:

改变这一行:

if (Keyboard::isKeyPressed(Keyboard::Key::Escape)) win.close();

收件人:

if (Keyboard::isKeyPressed(Keyboard::Key::Escape)){
   win.close();
   break;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-19
    • 1970-01-01
    • 2015-03-17
    • 1970-01-01
    • 1970-01-01
    • 2018-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多