我有几个数组和一个需要删除的资源,这些变量的值在程序的整个生命周期中都会保留,它们只在单个函数中使用,因此它自然适合静态变量:
void func() {
static GLfloat arrs[4] = {1, 1, 1, 1};
static GLUquadric* quad = gluNewQuadric(); // delete with gluDeleteQuadric(quad)
//... other codes ...
}
但是,如果我使用静态,我将无法删除这些资源,因为我无法从函数外部访问这些变量。我可以制作这些全局变量,但如果可能的话,我想避免这种情况。
所以问题是:
- arrs[] 是堆栈分配还是堆分配?那么,我需要删除它吗?
- 在 GLUquadric 的情况下,显然编译器不知道如何正确删除它,现在我使用了一个运行良好的RAII包装类,但我正在寻找是否有更简单的方法。
valgrind 抱怨没有发布 GLUquadric,我想我只是清理它而不是让 valgrind 静音,即使当我释放它们时程序应该即将结束并且这些资源可能(?)在程序结束时释放.