의 glibc는 일부 힙 검사를 수행하는 하나 개 이상의 방법이 보인다 다음 M_CHECK_ACTION 매개 변수를glibc의 MALLOC_CHECK_, M_CHECK_ACTION 및 mcheck의 차이점은 무엇입니까?
- mallopt을
- 변수 MALLOC_CHECK_ 환경
- 기능 내가 찾을
의 mcheck의 가족 사용 가능한 설명서가 혼란 스럽습니다. manual은 mallopt를 설명 할 때 M_CHECK_ACTION을 전혀 나열하지 않습니다. 그러나 This mallopt man page은 이고은 M_CHECK_ACTION을 설명합니다. 또한, 그것은 환경 변수 MALLOC_CHECK_에 해당 말한다 :
MALLOC_CHECK_ This environment variable controls the same parameter as mallopt() M_CHECK_ACTION. If this variable is set to a nonzero value, then a special implementation of the memory- allocation functions is used. (This is accomplished using the malloc_hook(3) feature.) This implementation performs additional error checking, but is slower than the standard set of memory-allocation functions.
glibc는 설명서가 mcheck and friends위한 페이지를 가지고 있으며, "힙 일관성 검사"로 설명합니다. 이 매뉴얼은 MALLOC_CHECK_에 대해 설명이 페이지에 :
또 다른 가능성을 확인의 malloc, realloc과의 사용에 버그를 방지하고 자유로운 환경 변수 MALLOC_CHECK_를 설정하는 것입니다. MALLOC_CHECK_이 설정되면, 같은 인수를 가진 double의 호출이나 단일 바이트의 오버런 (by-by-one 버그)과 같은 단순한 오류에 대해 견딜 수 있도록 고안된 특수 (비효율적 인) 구현이 사용됩니다.
mcheck 등은 MALLOC_CHECK_/M_CHECK_ACTION 대신 사용할 수 있습니까?
또한이 유용한 도움이되는 일관성 검사를 어떻게 비활성화 할 수 있습니까? man 페이지는 MALLOC_CHECK_ (그리고 M_CHECK_ACTION)을 0으로 설정하면 "메모리 할당 함수의 특별한 구현"을 사용하지 않을 것이라고 말합니다. 그러나 glibc 매뉴얼에는 "MALLOC_CHECK_이 설정되면 특수 (덜 효율적인) 구현이 사용됩니다." 0으로 설정된 환경 변수가 여전히 설정되어 있으므로이 중 하나가 잘못되었습니다.
예제 프로그램 (this mcheck man page의 예제 프로그램 사용)은 MALLOC_CHECK_ = 3 (RHEL 6.4)과 동일한 결과로 MALLOC_CHECK_을 설정하지 않았 음을 보여줍니다. 그리고 mcheck는 독립적으로 설정할 수 있기 때문에 전혀 관련이없는 것처럼 보입니다.