首页 > 解决方案 > SFML 程序访问冲突读取位置

问题描述

我目前正在开发一个 2D SFML 游戏,但我遇到了访问冲突,我似乎无法理解。SpriteManager创建课程时出现错误。

sf::Sprite *SpriteManager::getSprite(const std::string &name){
auto it = Sprites.find(name); 
if (it == Sprites.end())
{
    sf::Sprite *sp = NULL;
    sf::Texture tex;

    if (tex.loadFromFile(name)) 
    {                           //Access violation reading location
        sp->setTexture(tex);    //Get Access Violation here
        setSprite(name, sp);
    }
    else {
        return NULL;
    }

    delete tex;
    return sp;
}

return it->second;

这里的目标是调用getSprite("filename"),它应该检查它是否已经在我的无序精灵数组中,如果不是,它应该创建/加载纹理,将其分配给精灵,将精灵添加到数组并返回它。

抛出的确切异常是:

在 Game.exe 中的 0x0F314626 (sfml-graphics-d-2.dll) 处引发异常:0xC0000005:访问冲突读取位置 0x000000FC。

我正在参考这个 youtube 教程并将其转换为 SFML。 https://youtu.be/9pQ99zLKDx0?t=10m20s

我还收到有关此的各种其他错误sf::Texture tex。如果我删除该sp->setTexture(tex);行,我会在tex.loadFromFile(name).
我对编程还是很陌生,并且我没有太多解决访问冲突的经验。我很感激帮助。

标签: c++sfml

解决方案


推荐阅读