Должен ли я обязательно уничтожить объекты SDL 2.0 (рендерер, окно, текстуры и т. Д.) Перед выходом из программы?

это В учебнике по 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 и т. Д. Перед выходом?

5

Решение

Тот же вопрос, что и «Должен ли я освободить память, выделенную перед выходом из программы». Да, если нет ошибок в SDL / X11 / GL / и т. Д. доработайте код — все равно будет освобождено. Но я не вижу причин, почему вы не должны делать это самостоятельно.

Конечно, если вы потерпите крах, а не выйдете — есть большая вероятность, что некоторые вещи не будут выполнены, например, Вы не вернете дисплей к исходному разрешению рабочего стола.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]