2012-12-09 61 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 *的大小。

「版本」參數是const char *,在您的平臺上是四個字節。這個函數沒有得到版本字符串,但實際上獲得了一個指向版本字符串的指針。你不需要爲版本分配空間,只需要一個指針。這裏的工作示例代碼:

#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); 
}