从vector docs它会出现适当的方式彻底解除分配值的载体,你有一个类成员指针如:完全重新分配一个std的内存:: vector容器
std::vector<MyObject>* mvMyObjectVector_ptr;
...
//In the class constructor:
mvMyObjectVector_ptr = new std::vector<MyObject>();
会可以调用以下,为了在类的析构函数实现
mvMyObjectVector_ptr->clear();
delete mvMyObjectVector_ptr;
然而,这似乎是导致SIGABRT“指针被释放没有分配”的错误。上述习惯用法是完全释放指向矢量指向的地址处的内存的正确方法(如果是这样,我假设我的错误来自其他东西)?如果不是,那么正确的方法是什么?
看到指向动态分配向量的指针是很常见的。使用这种数据结构的好处之一就是将您从手动内存操作中解放出来。 – juanchopanza 2013-03-11 19:47:52
我认为在幕后我们没有被展示的是“三条法则”的违反。 – 2013-03-11 19:48:16
不要动态分配自动变量会做什么(摆脱新/删除)。不需要调用clear(),因为析构函数会这样做。 – 2013-03-11 19:48:29