我正在使用 SFML 包并在尝试关闭窗口/程序时收到段错误。我在我的代码中找到了导致段错误的行,这是当我试图破坏用于在 SFML 窗口中绘制文本的 sf::Font
时。
这行很简单:
delete button_font;
(类型为sf::Font*
)
我从 SFML 文档中读到,sf::Font
类确实有一个析构函数。我还在定义字体对象后立即对其进行了测试,它按预期自行销毁了。
字体由 sf::Font::loadFromFile(~)
加载。它在一些用作游戏状态和菜单的类中用作引用参数。当我尝试删除字体时,它被多个 sf::Text
对象使用会不会是个问题?
最佳答案
指针和动态内存是 C++ 中棘手的事情之一。有很多失败的方法,我猜是你删除了一个你一开始不是用 new
创建的指针,或者你删除了它两次,因为两个对象持有指向它的指针。
虽然对于您的直接问题可能是一个很好的解决方案,但真正的解决方案是使用smart pointer .
关于c++ - 尝试销毁 sf::Font 时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47530263/