This SDL 2.0 教程使用从 main 返回的代码,而不首先破坏任何资源指针:
int main(int argc, char** argv){
if (SDL_Init(SDL_INIT_EVERYTHING) == -1){
std::cout << SDL_GetError() << std::endl;
return 1;
}
window = SDL_CreateWindow("Lesson 2", SDL_WINDOWPOS_CENTERED,
SDL_WINDOWPOS_CENTERED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN);
if (window == nullptr){
std::cout << SDL_GetError() << std::endl;
return 2; //this
}
renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED
| SDL_RENDERER_PRESENTVSYNC);
if (renderer == nullptr){
std::cout << SDL_GetError() << std::endl;
return 3; //and this too
}
我应该在退出前将我的终止函数告诉 DestroyRenderer、DestroyWindow、DestroyTexture 等吗?
最佳答案
与“我应该在退出程序之前释放我分配的内存”的问题相同。是的,如果 SDL/X11/GL/etc 中没有错误。完成代码 - 无论如何都将被释放。但我看不出您不应该自己这样做的原因。
当然,如果您崩溃而不是退出 - 很有可能有些事情无法完成,例如您不会将显示恢复为 native 桌面分辨率。
关于c++ - 我是否应该确保在退出程序之前销毁 SDL 2.0 对象(渲染器、窗口、纹理等)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18886204/