2012-12-09 6 views
0

다음 코드를 사용하지만 jemalloc의 올바른 버전 문자열을 얻지 못합니다.jemalloc 버전을 얻는 방법

size_t size = 1000; 
char *ptr = (char *) malloc(size); 
mallctl("version", ptr, &size, NULL, 0); 

방금 ​​4 비트 크기의 문자열이 있는데 버전 문자열이 아닌 것으로 판명되었습니다. 문제는 버전 문자열이 const char *라고 생각합니다. 하지만 const char *를 호출하면 어떤 크기로 채워야합니까?

답변

2

물론 const char *의 크기를 입력해야합니다.

"version"매개 변수는 const char *이며 플랫폼에 따라 4 바이트입니다. 이 함수는 버전 문자열을 가져 오지 않지만 실제로는 버전 문자열에 대한 포인터를 가져옵니다. 버전을위한 공간을 할당 할 필요가 없습니다. 단지 포인터입니다. 다음은 작동 예제 코드입니다.

#include "stdio.h" 
#include "jemalloc/jemalloc.h" 

int main(void) 
{ 
    const char *j; 
    size_t s = sizeof(j); 
    mallctl("version", &j, &s, NULL, 0); 
    printf("%s\n", j); 
} 
관련 문제