尝试销毁sf :: Font时出现分段错误

时间:2017-11-28 11:18:32

标签: c++ segmentation-fault sfml delete-operator destruction

我正在使用SFML包并在尝试关闭窗口/程序时收到分段错误。我已经在我的代码中找到导致分段错误的行,这是当我尝试销毁用于在SFML窗口中绘制文本的sf::Font时。

这条线很简单:

delete button_font;(类型为sf::Font*

我从SFML文档中读到的内容,sf::Font类确实有一个析构函数。我在定义字体对象后立即对其进行了测试,它按预期自行销毁。

字体由sf::Font::loadFromFile(~)加载。它在一些用作游戏状态和菜单的类中用作参考。当我尝试删除字体时,几个sf::Text对象是否会使用它?

1 个答案:

答案 0 :(得分:1)

指针和动态内存是C ++中最棘手的事情之一。有很多方法可以失败,我的猜测是你删除了一个你没有用new创建的指针,或者你可能删除它两次,因为两个对象都有一个指向它的指针。

虽然可能是您直接问题的理想解决方案,但真正的解决方案正在使用smart pointer