클래스 내에 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 ***
벡터에 대한 포인터는 거의 항상 오류입니다. 대신 벡터를 사용해보십시오. –
왜 그런가? 나는 복사를 피하고 싶다. – TheGuyWithStreetCred
반원에게 '*'을 붙여서 복사하는 것을 피할 수 없다. –