c++ - 尝试销毁 sf::Font 时出现段错误

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

我正在使用 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/

相关文章:

c++ - 我试图删除文本文件中的一行时留下回车符

c++ - 自定义 Arduino 库未实例化

c - 多线程的段错误(核心转储)

c++ - 强制类的 const 成员在编译时进行评估

c++ - SFML 飞溅 Logo 窗口透明

c++ - 旋转纹理 sfml 并将输出保存到文件

c++ - 动态与静态内存在清洁度和速度方面的最佳实践

c++ - 快速排序最坏情况的提示

c - 段错误 ||使用c进行字符串操作

c - 使用 stdargs (va_start) 的 C 程序的奇怪行为 (SEGFAULT)