【发布时间】:2014-01-30 15:04:00
【问题描述】:
假设我有数组:
Geometry* shapes[MAX_SIZE];
然后我像这样填充数组:
for (int i = 0; i < MAX_SIZE; ++i)
{
shapes[i] = new Geometry;
}
delete [] shapes; 会完成这项工作,否则我必须遍历数组并一一删除:
for (int i = 0; i < MAX_SIZE; ++i)
{
delete shapes[i];
}
我认为我必须单独循环和删除每个指针,因为 delete [] 调用数组中对象的析构函数,这并不意味着内存将被释放。但我需要更有经验的人确认。
【问题讨论】:
-
正确的方法是使用
std::unique_ptr<Geometry> shapes[MAX_SIZE],不用做任何事情。但在你的情况下,你需要第二个。
标签: c++ pointers memory free delete-operator