我正在使用SFML包并在尝试关闭窗口/程序时收到分段错误。我已经在我的代码中找到导致分段错误的行,这是当我尝试销毁用于在SFML窗口中绘制文本的sf::Font
时。
这条线很简单:
delete button_font;
(类型为sf::Font*
)
我从SFML文档中读到的内容,sf::Font
类确实有一个析构函数。我在定义字体对象后立即对其进行了测试,它按预期自行销毁。
字体由sf::Font::loadFromFile(~)
加载。它在一些用作游戏状态和菜单的类中用作参考。当我尝试删除字体时,几个sf::Text
对象是否会使用它?
答案 0 :(得分:1)
指针和动态内存是C ++中最棘手的事情之一。有很多方法可以失败,我的猜测是你删除了一个你没有用new
创建的指针,或者你可能删除它两次,因为两个对象都有一个指向它的指针。
虽然可能是您直接问题的理想解决方案,但真正的解决方案正在使用smart pointer。