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

Segmentation fault when trying to destroy sf::Font

我正在使用 SFML 包并在尝试关闭 window/program 时收到分段错误。我在我的代码中找到了导致分段错误的行,这是当我试图破坏用于在 SFML window 中绘制文本的 sf::Font 时。

该行很简单:

delete button_font;(属于 sf::Font* 类型)

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

字体由 sf::Font::loadFromFile(~) 加载。在某些用作游戏状态和菜单的 classes 中,它被用作引用参数。当我尝试删除字体时,它被多个 sf::Text 对象使用会不会是个问题?

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

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