打开SFML窗口会产生内存读取错误

时间:2014-01-07 07:19:28

标签: c++ sfml

我正在尝试打开一个SFML窗口,但每次启动它时都会显示“访问冲突读取位置:0xCCCCCCC0”。 init()方法中发生错误。相关代码:

class AirportGame {
private:
    sf::RenderWindow window;
public:
    void init();
    int run();

/

void AirportGame::init() {
    window.create(sf::VideoMode(800, 600), "SFML window");
}

int AirportGame::run() {
    init();

    while (window.isOpen()) {
        sf::Event event;

        while (window.pollEvent(event)) {
            if (event.type == sf::Event::Closed) {
                window.close();
            }
        }
    }

    return 0;
}

int main() {
    AirportGame* app = new AirportGame();
    return app->run();
}

它发生在init之后的某个时间,因为实际的窗口是打开的。调试器中没有提到0xCCCCCC0。

2 个答案:

答案 0 :(得分:2)

修正了它!

在C ++预处理器下我将定义设置为SFML_STATIC而不是SFML_DYNAMIC

答案 1 :(得分:-1)

将窗口设置为a RenderWindow * window;

并使用

创建它
window = new sf::RenderWindow( /*your stuff or default initialize*/ );

然后致电

window->create( /*your settings*/ );

如果你还没有初始化它。

从那时起只使用' - >'进入访问窗口而不是'。'