Linux 용 GCC에서 컴파일 된 내 C 프로그램 내부의 기본 질문 : 현재 사용중인 프로세스 힙의 양 (malloc
할당) 및 얼마나 많은 양 무료 힙 블록. 표준 라이브러리의 GNU 구현은 정확히 내가 필요한 것을보고하는 mallinfo
기능을 가지고 있지만 32 비트 구성에서만 사용할 수 있으며 AFAIK에는 64 비트에 해당하는 기능이 없습니다 (이유는 누구나 알 수 있습니까?).64 비트 플랫폼에서 GCC의 기본 힙 사용 통계
저는 Linux에서 GCC를 사용하기 때문에 Linux에서이 파일이 필요합니다. 그러나 힙이 시스템에 불투명하다고 가정하므로이 질문에 대답하는 유일한 방법은 표준 라이브러리의 구현에 의해 제공된 수단을 사용하는 것입니다. Windows 플랫폼에서 MSVC 구현에서
는 mallinfo
기능의 동등한 없다하지만 그래서 하나는 힙에있는 모든 블록을 반복하여 필요한 정보를 계산할 수 있습니다 힙 도보 기능을 거기라고. AFAIK, GNU C 라이브러리에는 힙 워크 인터페이스가 없습니다. (거기 있니?).
그래서 다시 GCC에서 무엇을합니까? 효율적일 필요는 없습니다. 즉, 앞서 언급 한 힙 - 워크 기반 접근법이 저에게 완벽하게 작동 할 것입니다. 얼마나 많은 힙이 사용되고 있고 GCC에서 얼마나 많은 양이 무료인지 알 수 있습니까? mallinfo
을 사용하지 않고 현재 힙 아레나 크기 (mallinfo.arena
참조)를 결정하는 방법을 모르지만 malloc 후크를 설치하고 "수동으로"크기를 추적 할 수 있습니다.
이 링크는 귀하가 이야기하는 내용을 다루겠습니까 : http://www.aquaphoenix.com/ref/gnu_c_library/libc_31.html? – Yktula
아마도 ... GCC의 제 버전은'mstats'에 대해 아무것도 모릅니다. 더욱이, 링크하고있는 문서는 GNU 웹 사이트 http://www.gnu.org/s/libc/manual/html_node/index.html#toc_Memory에서 구할 수있는 비슷한 문서와 다르다.'mstats' 대신에 'mallinfo'. 나는 당신의 링크가 GNU C 라이브러리의 오래된 버전으로 연결되는 것으로 생각한다. – AnT