2013-01-23 1 views

답변

0

나는 나를 위해 부분적으로 해결책을 찾았습니다.

나는 작은 테스트 응용 프로그램을 실행하고 우리가 (예 : char arr[1024];) 스택에 메모리를 할당하는 경우 pi_dvmprocentry64 구조의 회원이 증가 할 것으로보고 할당 된 객체와 약간의 오버 헤드의 크기. 우리는 사용 된 힙 크기를 계산하려고합니다. mallinfo 구조체를 반환하는 malloc.hmallinfo() 함수를 사용해야합니다. 우리는 mallinfo 구조의 두 필드에 관심이 있습니다 : usmblksuordblks (이 필드에 대해서는 here을 읽을 수 있습니다). 몇 가지 예제 코드 :

pid_t pid = getpid(); 
struct procentry64 p_info; 
if (getprocs64(&p_info, sizeof(p_info), NULL, 0, &pid, 1) < 0) { 
    printf("Error!"); 
} 
proc_size = p_info.pi_dvm*getpagesize() + p_info.pi_tsize; 
struct mallinfo m = mallinfo(); 
proc_size += m.usmblks + m.uordblks; 
return proc_size; // proc_size in bytes 

P.S. 모르겠다 왜 우리는 pi_tsize을 합친 것일까? (아무도 모른다면 알려주십시오.) pg_top 소스에서이 아이디어를 얻었지만 버그가있는 경우 pi_tsize이 바이트이기 때문에 pi_tsize에 4를 곱합니다.하지만 올바르지 않습니다. 이 솔루션이 도움이 되길 바랍니다.