У меня есть простая игра в стиле танковых войн, использующая библиотеку с открытым исходным кодом allegro. В моем классе резервуара я инициализирую массивы указателей на растровые объекты равными 0. Затем я создаю новые объекты с помощью функции allegro create_bitmap, которая выделяет память и инициализирует ее.
Затем я занимаюсь своими делами, как обычно.
Проблема в том, что когда я собираюсь освободить растровую память в деструкторе класса, как хороший ООП-мальчик, я вылетаю из программы, потому что в этой конкретной программе библиотека allegro выполняет очистку (которая освобождает созданные ею растровые объекты) перед классом. выходит за рамки и уничтожается. Однако он не устанавливает мои указатели в NULL снова, поэтому я не могу проверить, действительны ли растровые изображения, и если я попытаюсь их освободить, это приведет к сбою программы.
Есть ли способ обойти это? Могу ли я проверить действительные указатели, если они не равны NULL? Как я могу быть УВЕРЕН, что память освобождается, если класс используется в программе по-другому. В нынешнем виде я, по сути, вызываю новый без удаления, и мне это не нравится.