Get*_*eto 1 c++ memory free pointers delete-operator
假设我有阵列:
Geometry* shapes[MAX_SIZE];
Run Code Online (Sandbox Code Playgroud)
然后我像这样填充数组:
for (int i = 0; i < MAX_SIZE; ++i)
{
shapes[i] = new Geometry;
}
Run Code Online (Sandbox Code Playgroud)
将delete [] shapes;完成工作或我必须循环遍历数组并逐个删除:
for (int i = 0; i < MAX_SIZE; ++i)
{
delete shapes[i];
}
Run Code Online (Sandbox Code Playgroud)
我想我必须单独循环和删除每个指针,因为delete []调用数组中对象的析构函数,这并不意味着将释放内存.但我需要更有经验的人的确认.
你有一个简单的指针数组.使每个指针指向动态分配的个体Geometry.所以你需要调用delete每个指针.delete []用于动态分配的数组.
在现实生活中,您将使用自动管理资源的类型,以避免必须手动删除指针.选项包括std::unique_ptr<Geometry>用于管理动态分配对象的数组或容器,例如boost::pointer_container库中可用的对象.