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 ***
这取决于你的创作方式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是使用静态内存的静态变量或全局变量,则不应删除它,它将自动解除分配.只能删除动态内存.