0

次のコードを使用しましたが、jemallocの正しいバージョン文字列を取得できません。

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

4ビットサイズの文字列を取得しましたが、バージョン文字列ではなく印刷しました。問題は、バージョン文字列がconstchar*であることにあると思います。しかし、const char *で呼び出す場合、どのサイズを入力する必要がありますか?

4

1 に答える 1

4

もちろん、 のサイズを記入する必要がありconst char *ます。

「バージョン」パラメータは で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);
}
于 2012-12-09T04:28:45.363 に答える