SFML程序访问冲突读取位置

时间:2018-09-16 00:37:34

标签: c++ 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"),它应该检查它是否已经在我的Sprite的无序数组中,如果不是,则应该创建/加载纹理,将其分配给sprite,然后将sprite添加到数组并返回它。

抛出的确切异常是:

  

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)处出现访问写入冲突。
我对编程还是很陌生,并且我对故障排除访问冲突没有太多经验。感谢您的帮助。

0 个答案:

没有答案