【发布时间】:2014-11-05 10:16:06
【问题描述】:
我在课堂上有一个const std::vector<double> *vecPtr。我想正确释放内存,那么我的destructor 应该是什么样子?
我试过 ~ClassA() { delete[] vecPtr; } ,但我得到一个错误
*** Error in `./test': free(): invalid pointer: 0x00007fff8c643a98 ***
Aborted (core dumped)
delete[] 是否仅在向量被指针填充时才有效?
编辑:
我像这样使用vecPtr:vecPtr = &vec;
如果我只使用delete,我会得到*** Error in ./test': double free or corruption (fasttop): 0x00000000008fcb20 ***
【问题讨论】:
-
指向向量的指针几乎总是错误的。尝试改用向量。
-
为什么,我要避免复制
-
你不能通过在班级成员前面粘贴
*来避免复制。 -
事实上,任何用作类成员的指针几乎总是错误的。一个例外是当您收到第三方代码的指针时。在大多数其他情况下,您应该使用 shared_ptr 或 unique_ptr 或不使用
*
标签: c++ pointers vector delete-operator