Проверьте, была ли поверхность освобождена до SDL_FreeSurface - PullRequest
1 голос
/ 21 октября 2011

При использовании SDL_Surface s для обработки изображений я сталкиваюсь с проблемой, заключающейся в том, что выполнение SDL_FreeSurface(SDL_Surface *) ( doc ) дважды для одного и того же указателя приводит к ошибке сегментации.

Я понимаю, почему это происходит, но мне нужно знать, как мне этого избежать.Я хотел бы проверить состояние указателя (выяснить, указывает ли он на существующую поверхность), а затем освободить поверхность только при необходимости.

Как я могу это сделать?

1 Ответ

4 голосов
/ 21 октября 2011

Вы пишете класс, который инкапсулирует указатель SDL_Surface, который освобождает поверхность в его деструкторе.Также убедитесь, что вы правильно внедрили или отключили конструктор копирования и оператор присваивания.(см. Правило 3 ) Тогда вы никогда больше не будете работать напрямую с указателями SDL_Surface.

Вот пример оболочки вокруг SDL, над которой я работал некоторое время назад.

Я прекратил работу, как только узнал о SFML .

...