我正在使用SFML软件包,尝试关闭窗口/程序时收到分段错误。我在代码中找到了导致分段错误的行,这是我尝试破坏sf::Font
SFML窗口中用于绘制文本的行的原因。
该行很简单:
delete button_font;
(属于sf::Font*
)
我从SFML文档中了解到,sf::Font
该类确实具有析构函数。定义字体对象后,我也立即对其进行了测试,它可以按预期破坏自身。
字体由加载sf::Font::loadFromFile(~)
。在某些用作游戏状态和菜单的类中,它通过引用用作自变量。sf::Text
当我尝试删除字体时,可能会被多个对象使用,这可能是一个问题吗?
指针和动态内存是C ++中棘手的事情之一。失败的方法有很多,我想可能是您删除了最初没有创建的指针,new
或者您删除了两次,因为有两个对象持有指向它的指针。
虽然可能有一个直接问题的好的解决方案,但真正的解决方案是使用智能指针。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句