SDL_DISPLAYFORMAT使用initializer_list崩溃
SDL_DisplayFormat crashes with initializer_list
我有一个我正在使用filepath字符串列表初始化的结构。但是,如果我尝试在这些字符串创建的SDL_Surfaces上调用SDL_DISPLAYFORMAT,则该应用程序将无法启动。它不会崩溃,也不会像普通一样生成stdout.txt或stderr.txt,而是没有启动。编译器没有给出任何错误或警告。这是我的代码:
struct Object {
std::vector<SDL_Surface*> surfaceVector;
Object(initializer_list<std::string> init) {
for (auto i : init) {
SDL_Surface* loadSurface = SDL_LoadBMP(i.c_str());
surfaceVector.push_back(SDL_DisplayFormat(loadSurface););
SDL_FreeSurface(loadSurface);
}
}
}
如果我不调用SDL_DISPLAYFORMAT,我可以像正常情况一样访问和闪烁表面表面,因此它们似乎正在正确加载。但是,我希望表面向量中的表面以显示格式。
如果您使用的是SDL2,请尝试使用SDL_ConvertSurfaceFormat()
代替SDL_DisplayFormat()
。
SDL_ConvertSurfaceFormat上的SDL的Wiki页面。
相关文章:
- 当回溯以零开始时,如何调试崩溃
- 使用std::multimap迭代器创建std::list
- 来自 std::list 的迭代器 .end() 按预期返回"0xcdcdcdcdcdcdcdcd"但 .begin()
- 如何在 C 中正确使用 libiconv 使其不会报告"Arg list too long"?
- C++中带有List类的迭代器Segfault
- 内联映射初始化的动态atexit析构函数崩溃
- 执行函数时导致崩溃的变量
- 使用"std::unordereded_map"映射到"std::list"对象
- 程序崩溃并显示"std::out_of_range"错误
- GCC对可能有效的代码抛出init list生存期警告
- CoInitialize()在单独的线程上崩溃而不返回
- 使用std::list创建循环链表
- 使用调试/崩溃报告将应用程序部署到客户端
- 重载Singly Linked List中的赋值运算符
- 为什么所有C++编译器都会崩溃或挂起此代码
- 为什么lambda在clang上崩溃而不是在gcc上崩溃
- 连续使用 std::list 会导致崩溃
- std::list 反向迭代和擦除导致崩溃
- std::list libev 回调崩溃
- 在c++中对STL List使用push_back()会导致访问冲突,崩溃