내 클래스 중 하나 (소위 Distribution
)의 소멸자가 double free or corruption
오류를 던지고 있습니다. 나는 역 추적을 수행 할 때,이 얻을 다음 Distribution
소멸자 완료하고이 벡터에 소멸자를 호출 할 때 벡터에 의한 이중 자유 또는 손상
#7 0x0000000000409212 in std::vector<double, std::allocator<double> >::~vector (
this=0x7fffffff8f70)
at /usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../include/c++/4.6/bits/stl_vector.h:351
#8 0x00000000004032c5 in Distribution::~Distribution (this=0x7fffffff8f28)
at Distribution.cpp:165
그래서 오류가 발생합니다. 그것은 단순한 벡터로 포인터 나 다른 것이 아니라 double을 포함합니다.
~vector
이 (가)이 오류의 원인 일 수 있습니까?
ETA : 간단한 코드 예제를 유용하게 제공 할 수 있는지 모르겠습니다. 내 코드의 여러 위치에서 모든 것이 많이 발생하고 어떤 부분이 관련이 있는지에 대해 잘 알지 못합니다. 의견은 메모리 손상 문제를 암시하므로이를 찾을 수 있습니다.
소멸자에서 프로그램이 작동하지 않는다고해서 버그가있는 곳을 의미하지는 않습니다. C++에 오신 것을 환영합니다. [mcve]를 게시해야합니다. –
벡터의 소멸자가 문제의 원인이 아니므로 코드의 다른 부분이 있습니다. 불행히도 많은 정보를 제공하지 않았습니다. –
종종 메모리 문제가 나중에 나타날 때까지 표시되지 않습니다. 너가 무언가를 타락시키는 것을 처리하면 너는 기억을 풀어 놓을까지 너는 모를지도 모른다. –