我有一个使用 allegro 开源库的简单坦克战争风格游戏。在我的坦克类中,我将指向位图对象的指针数组初始化为 0。然后我使用 allegro 函数 create_bitmap 创建新对象,该函数分配内存并对其进行初始化。
然后我照常做我的事情。
问题是,当我像一个好的 OO 男孩一样去释放类析构函数中的位图内存时,我使程序崩溃,因为在这个特定的程序中,快板库在类之前进行了清理(释放了它创建的位图对象)超出范围并被销毁。它不会再次将我的指针设置为 NULL,所以我无法检查位图是否仍然有效,如果我尝试释放它们,它们会使程序崩溃。
有没有办法解决?如果它们不为 NULL,我可以检查有效的指针吗?如果在程序中以不同的方式使用该类,我如何确定内存已被释放。就目前而言,我本质上是在没有删除的情况下调用 new 并且我不喜欢它。