나는 메모리 누수를 감지하는 Visual Leak Detector를 사용하고, 그리고 같은 라인에서 메모리 누수의 많은 경우가 발생했습니다 :std :: map operator []가 기본적인 데이터 형식으로 메모리 누수를 일으키는 방법은 무엇입니까?
class SomeClass
{
// ...
std::map<long,long> some_map;
void func(long a_long, long b_long)
{
some_map[a_long] = b_long; // here be a memory leak
}
}
어떻게 이런 일이 가능하다조차? 여기에 포인터가 없으며 객체 인스턴스화가 없습니다.
다른 이유로 인해 프로그램이 중단되는 부작용이 메모리 누출 일 수 있습니까? 프로그램이 충돌하거나 종료 (1)하면지도가 깨끗하게 파괴되지 않습니까?
귀하와 피터의 답변을 결합해야합니다. – Omnifarious
exit (1) 명령으로 비정상적인 종료가 발생합니까? – Jonathan
@ Jonathan- 스펙 18.3.8 절에 따르면 "자동 객체는'exit() '를 호출 한 결과 파괴되지 않습니다." 그래서 예, 'exit'를 호출하면 소멸자가 실행되지 않습니다. – templatetypedef