我使用Xcode 8.3.3在MacOS 10.12上运行它,并通过Homebrew作为Dylibs安装SDL2.
下面是一些来自lazy foo的略微修改的示例代码.
我刚刚添加了第二个纹理gTexture2和功能loadMedia2,以便能够重现该问题.第二次IMG_Load执行它崩溃时出现以下消息:
EXC_BAD_ACCESS (code=EXC_I386_GPFLT)
Run Code Online (Sandbox Code Playgroud)
搜索如何解决"一般保护错误"问题也没有让我更进一步,崩溃似乎发生在SDL内部.我可能真的误解了导致这个问题的事情,并且非常欢迎任何帮助.
真正令人困惑的是,它不会一直崩溃,只有3次中的2次.
崩溃似乎发生在里面SDL_AllocFormat_REAL ():
这是代码示例.
/*This source code copyrighted by Lazy Foo' Productions (2004-2015)
and may not be redistributed without written permission.*/
//Using SDL, SDL_image, standard IO, and strings
#include <SDL.h>
#include <SDL_image.h>
#include <stdio.h>
#include <string>
//Screen dimension constants
const int SCREEN_WIDTH = 640;
const int SCREEN_HEIGHT = 480;
//Starts up SDL and …Run Code Online (Sandbox Code Playgroud) StackOverflow 上有很多地方,这个问题已经被问到并得到了回答。然而,我发现其中的大部分,虽然在技术上是正确的,但遗漏了一些特定的细节,这些细节不仅解释了实际发生的事情,而且在尝试调试文件引用或构建问题时可能是有价值的信息。
我决定根据杰夫·阿特伍德(Jeff Atwood)自己关于鼓励在他说的地方张贴您自己的答案的评论将其发布在这里...
不仅可以提出和回答您自己的问题,而且明确鼓励 [...] 我一直这样做!
因此,我将详细解释这些项目背后究竟发生了什么,希望这些知识可以帮助其他人,因为它对我有帮助,特别是在清除 Xcode 思维的普遍误解方面9,项目树镜像磁盘上的文件夹,实际上并非如此。