Valgrind:
이 질문은 시스템에서 여전히 접근 가능한 메모리에 대한 Valgrind 경고에 관한 것입니다.
문제:
#include <iostream> int main() { return 0; }
답변:
Valgrind 경고는 버그가 아니라 특징. C 표준 라이브러리의 많은 구현에서는 자체 메모리 풀 할당자를 사용합니다. 파괴된 객체에 대한 메모리는 즉시 해제되어 OS에 다시 제공되지 않고 나중에 재사용할 수 있도록 풀에 보관됩니다. 프로그램이 종료될 때 메모리 풀도 해제되지 않으므로 Valgrind는 메모리에 여전히 접근 가능한 것으로 보고합니다.
해결책:
풀 캐싱을 비활성화하는 방법에는 여러 가지가 있습니다. STL이 malloc을 사용하고 메모리를 해제하도록 강제합니다. 가능:
g++ -D__USE_MALLOC ...
export GLIBCPP_FORCE_NEW=1
export GLIBCXX_FORCE_NEW=1
추가 참고:
위 내용은 Valgrind가 ``를 사용하는 간단한 프로그램으로 여전히 접근 가능한 메모리를 보고하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!