빈 콘솔 응용 프로그램을 생성하고 STL 컨테이너를 사용하면 응용 프로그램이 닫힐 때 FastMM이 메모리 누수를보고합니다. 예를 들어C++ Builder 6의 STL 컨테이너에서 FastMM이 메모리 누수를보고합니다.
, 나는 std::vector<int>
main()
에서 작성하는 경우 :
std::vector<int> v;
컴파일, 실행 및 닫기, 누출이보고되지 않습니다.
내가 할 경우
std::vector<int> v;
v.push_back(100);
내가 얻을 :
이 응용 프로그램은 메모리를 유출했다. 소 블록 누출은 :
309-340 바이트 : 알 X 1
마찬가지로, I는보고 누출 얻을 :
std::vector<int> v;
v.push_back(100);
v.clear();
또한 누설이보고되어
std::vector<int> v;
v.reserve(1);
std::deque
과 같은 일부 컨테이너의 경우 내용을 변경하지 않고도 누수를 표시 할 수 있습니다. 응용 프로그램이 종료되면 orted.
아무도 무슨 일이 일어나고 있는지 설명 할 수 있습니까? 저는 Borland C++ Builder 6와 FastMM4를 사용합니다. 나는 FastMMOptions.inc
에서 다양한 설정을 변경했지만 아직 이러한 누수가보고됩니다.
[볼랜드 C++ 빌더 6] (https://en.wikipedia.org/wiki/C%2B%2BBuilder#Version_history)은 2002 년에 나온 것으로 보인다. 현대 컴파일러? 심지어 최신 버전의 C++ Builder? 14 년은 소프트웨어면에서 오랜 시간입니다. – CoryKramer
내가 말하기를, 코드 스 니펫을 감안할 때, 컴파일러에 의한 잘못된'std :: vector' 구현 이외의 (주변 컨텍스트를 보지 않고) 메모리 누출을 일으킬만한 것이 없다는 것입니다. 또는 누출 감지기에 의해보고 된 오 탐지. – CoryKramer
예, 우리는 새로운 환경에서 볼랜드 XE7과 새로운 프로젝트를 개발했습니다. 그러나 기존 프로젝트에서 메모리 누수를 조사해야합니다. 기존 프로젝트에서는 크기 때문에 XE7로 마이그레이션하지 않았습니다. FastMM은 매우 유용하지만, STL이 코드의 여러 곳에서 사용되고 있기 때문에, 혼란스러운 부분을 지적하고 있습니다. – bboydushko