【发布时间】:2011-03-24 18:36:02
【问题描述】:
我觉得提出关于删除指针的问题有点愚蠢,但我需要确保我以正确的方式删除,因为我目前正在调试我的程序。
基本上我有几个指针数组,它们在我的头文件中定义如下:
AsteroidView *_asteroidView[16];
然后在 for 循环中初始化它们:
for(int i = 0; i < 16; i++)
{
_asteroidView[i] = new AsteroidView();
}
好的,到目前为止一切顺利,一切正常。 当我最终需要在析构函数中删除这些时,我使用以下代码:
for(int i = 0; i < 16; i++)
{
delete _asteroidView[i];
}
这就是我需要做的一切吗?我觉得是这样,但我担心会出现内存泄漏。
出于兴趣... 点到对象的数组和对象的数组有很大区别吗?
【问题讨论】:
-
是的,这很好 - 你不会泄漏内存。
-
考虑使用智能指针数组,这样就不需要在析构函数中编写循环。
-
不要在全局范围内声明带有前导下划线的变量(这些标识符是为实现保留的)。该实现不太可能使用标识符 _asteroidView,但您现在应该改掉这是一个坏习惯。
-
它可以工作(虽然不是异常安全的)。但真正的问题是您是否需要动态分配 AsteroidView?如果没有更多上下文,很难判断这是否(或@Space_V0wb0y 解决方案是最好的)。
-
Martin,它们是私有的,而不是全局变量……抱歉,我在帖子中没有说清楚。老实说,我可能不需要动态分配它......
标签: c++ arrays pointers delete-operator