删除指向矢量的指针

The*_*red 3 c++ pointers vector delete-operator

我有const std::vector<double> *vecPtr一个班级.我想正确地释放内存,那么我应该destructor怎么样?

我试过了~ClassA() { delete[] vecPtr; },但是我收到了一个错误

*** Error in `./test': free(): invalid pointer: 0x00007fff8c643a98 ***
Aborted (core dumped)
Run Code Online (Sandbox Code Playgroud)

请问delete[]如果矢量充满指针才起作用?

编辑:

我用vecPtr这样的:vecPtr = &vec;

如果我使用delete我得到*** Error in ./test': double free or corruption (fasttop): 0x00000000008fcb20 ***

son*_*yao 6

这取决于你的创作方式vecPtr.如果你使用过vecPtr = new std::vector<double>,你应该使用delete vecPtr;

如果vecPtr是通过创建array new,例如vecPtr = new std::vector<double>[3];,你应该使用array delete,delete[] vecPtr;

编辑

如果您使用过vecPtr = &vec;,如果vec是自动变量,使用自动内存,或者vec是使用静态内存的静态变量或全局变量,则不应删除它,它将自动解除分配.只能删除动态内存.


Chr*_*000 5

去除 []。它用于删除数组。

delete vecPtr;
Run Code Online (Sandbox Code Playgroud)

您可能不应该使用指向向量的指针,因为没有太多理由这样做。