C++ SDL 分段错误
Posted
技术标签:
【中文标题】C++ SDL 分段错误【英文标题】:C++ SDL segmentation fault 【发布时间】:2012-05-12 15:26:54 【问题描述】:我让我的游戏正常运行,然后决定尝试使用以下 tutorial 实现一个菜单。
我没有使用教程来创建他之前创建的教程中的游戏。
每当我编译并运行程序时,它会短暂加载,然后关闭并在code::blocks
的构建日志中显示Process terminated with status 3 (0 minutes, 1 seconds)
。
更新:我已将 pastebin 链接的代码更新为我现在所拥有的,我现在从调试器得到的错误是
Program received signal SIGSEGV, Segmentation fault.
In TTF_SizeUNICODE () (E:\game\pong\bin\Debug\SDL_ttf.dll)
At E:\game\pong\main.cpp:27
更新 2:我尴尬地没有安装字体。我已经安装了字体,现在调试器到达屏幕显示“开始”和“退出”字体的位置,但是,在执行此操作后程序立即冻结,调试器中没有错误,并且如果我正常运行程序,它只是在显示文本后停止响应,奇怪。从code::blocks
启动程序后强行关闭窗口后才发现,返回这个:Process terminated with status -805306369 (0 minutes, 13 seconds)
。
更新 3:已解决。
【问题讨论】:
请自行缩小您的问题范围,必要时使用调试器,如果您仍然卡住,请在此处发布相关代码。 【参考方案1】:在将 screen
(第 220 行)传递给 showMenu
(第 224 行)之前,您没有初始化它。 AFAIK SDL_SetVideoMode
返回一个可用于 screen
的表面。
【讨论】:
恐怕我不完全理解,我已经移动了“SDL_Surface* 屏幕;TTF_Font* 字体;”到 showMenu 之前,但对于 SetVideoMode,我应该复制我现有的“SDL_SetVideoMode(600,400,32, SDL_OPENGL);”从第 172 行到更早的位置,例如第 12 行(在 showMenu 之前)?非常感谢您的回复!谢谢你的帮忙! :) 我说的是初始化而不是声明。第 168 行应该是screen = SDL_SetVideoMode(600,400,32, SDL_OPENGL );
我已更改第 168 行,但错误仍然存在。如果您想检查,我已将 pastebin 链接更新到当前编码:) 调试器仍然在同一行抛出相同的错误。 “程序收到信号 SIGSEGV,分段错误。在 E:\game\pong\main.cpp:31”谢谢你的帮助,我对 c++ 很陌生,正如你所说,我不太擅长然而,但希望变得更好!
我已将 pastebin 链接的代码更新为我现在所拥有的,我现在从调试器得到的错误是程序收到信号 SIGSEGV,分段错误。在 TTF_SizeUNICODE () (E:\game\pong\bin\Debug\SDL_ttf.dll) 在 E:\game\pong\main.cpp:27 像往常一样,任何回复表示赞赏,谢谢。
@JohnSmith 可能是您需要先安装字体。以上是关于C++ SDL 分段错误的主要内容,如果未能解决你的问题,请参考以下文章