【发布时间】:2019-12-29 21:48:00
【问题描述】:
如果我有一个像 std::set 这样的容器,其中包含指向动态对象的指针,那么我该如何释放它的元素?
int main()
{
// new scope
{
int x = 10;
std::set<int*> spi;
spi.insert(new int(1));// elem is a dynamic object init from 1
spi.insert(new int[3]()); // elem is a dynamic array of 3 default-init integers
spi.insert(&x); // elem is address of stack memory object
}
}
那么我怎样才能有效地释放具有动态内存的元素呢?
- 我知道我可以使用一组 shared_ptrs 或 unique_ptr,但为了练习,我想知道如何使用。
【问题讨论】:
-
您应该在单独的集合中跟踪您手动分配的内存。
-
有效释放一组指针的正确方法是使用一组智能指针。
-
哦,你不能像这样在
std::set中混合数据类型和分配策略,这是一个非常糟糕的主意。
标签: c++ dynamic-memory-allocation stdset