STL向量释放

时间:2011-01-21 01:08:55

标签: c++ stl vector

给定STL vector指针,在销毁vector本身之前必须释放每个元素。是否有任何技术含义阻止STL库自动执行此操作?

由于

3 个答案:

答案 0 :(得分:5)

STL不为你做的原因是它无法知道它是否应该。一些指向数组的指针(在这种情况下它需要做delete[]),指向常规对象的指针(在这种情况下它需要做delete),或者可能有一些来自某些人的记忆自定义分配器。这些指针也可以与其他一些对象共享,在这种情况下,删除它们会导致其他对象指向垃圾数据,从而导致未定义的行为。那些指针也可以是堆栈分配的内存,在这种情况下不需要重新分配。

答案 1 :(得分:2)

你可以存储那些在矢量被破坏时不应该被删除的指针

使用智能指针的向量(例如boost :: shared_ptr)来接收自动释放

答案 2 :(得分:2)

如果向量包含指针,则并不意味着指针指向动态内存。如果他们这样做,应该deletedelete[]应用于每个指针吗?如果指针指向使用placement new创建的对象,该怎么办?所有这些问题都应该由程序员来回答,而不是由图书馆来回答。