совместное использование jemalloc и другого распределителя, как сказать, кто выделил указатель? - PullRequest
0 голосов
/ 10 октября 2019

Как сказано в названии, я использую jemalloc для разработки библиотеки для приложения. В то же время приложение использует и другие библиотеки, а некоторые другие не используют jemalloc. Нам довольно сложно изменить код всех этих библиотек для адаптации к одному и тому же распределителю. Поэтому мы должны использовать jemalloc, чтобы выделить часть памяти. Тогда мы сталкиваемся с проблемой указания указателя, если он выделен jemalloc. Я попытался использовать mallctl с "arena.lookup", но кажется, что jemalloc сообщит об ошибке сегмента при вводе указателя, который не приходит из jemalloc. Например, вы можете использовать Linux Malloc, а затем искать арену с ним, и он будет сообщать о сбое сегмента. Код может быть простым как: void * ptr = malloc (size);// это выделяется устаревшим linux malloc int err = jemk_mallctl ("arenas.lookup", & temp_arena, & sz, & ptr, sizeof (ptr));// -> здесь будет сообщаться об ошибке сегмента.

Я могу использовать некоторые структуры данных для управления всеми указателями, выделенными из jemalloc, и проверки его там. Но мне интересно, есть ли в jemalloc другой API, который может сказать мне, выделен ли указатель из jemalloc или нет? Если есть, то что это?

Спасибо, Крис

...