我正在使用SFML软件包,并在试图关闭窗口/程序时会收到分段故障。我在代码中找到了导致分割故障的行,这是我尝试销毁用于在SFML窗口中绘制文本的sf::Font
时。
线简单:
delete button_font;
( sf::Font*
类型)
我从SFML文档中读到的内容,sf::Font
类的确具有破坏者。我还在定义字体对象后立即对其进行了测试,它按预期破坏了自身。
字体由sf::Font::loadFromFile(~)
加载。在某些类用作游戏状态和菜单的类中,它通过参考用作参数。当我尝试删除字体时,几个sf::Text
对象使用它?
指针和动态内存是C 中棘手的事情之一。有很多失败的方法,我的猜测是您首先删除了您没有使用new
创建的指针,或者也许您将其删除了两次,因为两个对象都有指针。
May 是您直接问题的一个很好的解决方案,但 real 解决方案是使用智能指针。