malloc_get_state, malloc_set_state -
сохраняют
и
восстанавливают
состояние
в
реализации
malloc
Standard C library (
libc,
-lc)
#include <malloc.h>
void *malloc_get_state(void);
int malloc_set_state(void *state);
Note: these function are removed in glibc 2.25.
Функция
malloc_get_state()
записывает
текущее
состояние
всех
внутренних
служебных
переменных
malloc(3) (но не
фактическое
содержимое
кучи или
состояние
указателей
функций
malloc_hook(3)).
Состояние
сохраняется
в
системно-зависимой
структуре
данных с
закрытым
форматом,
динамически
выделенной
через
malloc(3), и
указатель
на эту
структуру
данных
возвращается
как
результат
функции
(вызывающий
является
ответственным
за вызов
free(3)
для этой
памяти).
Функция
malloc_set_state()
восстанавливает
значения
состояния
внутренних
служебных
переменных
malloc(3) из
сохранённой
структуры
закрытого
формата, на
которую
указывает
state.
При
успешном
выполнении
malloc_get_state()
возвращает
указатель
на только
что
выделенную
структуру
с закрытым
форматом.
При ошибке
(например,
если не
получилось
выделить
память под
структуру)
malloc_get_state()
возвращает
NULL.
При
успешном
выполнении
malloc_set_state()
возвращается
0. Если
реализация
обнаруживает,
что
state не
указывает
на
корректную
структуру
с данными,
то
malloc_set_state()
возвращает
-1. Если
реализация
обнаруживает,
что версия
структуры
данных, на
которую
ссылается
state, новее
чем
известно
реализации,
то
malloc_set_state()
возвращает
-2.
Описание
терминов
данного
раздела
смотрите в
attributes(7).
Интерфейс |
Атрибут |
Значение |
malloc_get_state(), malloc_set_state() |
Безвредность
в нитях |
MT-Safe |
Эти
функции
являются
расширениями
GNU.
Эти
функции
полезны
при
использовании
реализации
malloc(3) в виде
общей
библиотеки,
а
содержимое
кучи
сохраняется/восстанавливается
каким-то
другим
способом.
Это
используется
в GNU Emacs для
реализации
своей
функции
«выгрузки».
Эти
функции
никогда не
сохраняют
и не
восстанавливают
указатели
на
перехватывающие
функции, но
есть два
исключения:
если
вызваны
проверки malloc
(смотрите
mallopt(3)), то, если
возможно,
malloc_get_state()
сбрасывает
проверки malloc
перехватывающих
функций;
если
проверки malloc
не
используются
в
сохранённом
состоянии,
но
вызывающий
их
запросил,
то
перехватывающие
функции
сбрасываются
в 0.
malloc(3),
mallopt(3)
Русский
перевод
этой
страницы
руководства
был сделан
aereiae <
[email protected]>, Alexey <
[email protected]>, Azamat
Hackimov <
[email protected]>, Dmitriy S. Seregin
<
[email protected]>, Dmitry Bolkhovskikh <
[email protected]>,
ITriskTI <
[email protected]>, Max Is <
[email protected]>, Yuri
Kozlov <
[email protected]>, Иван
Павлов <
[email protected]>
и Малянов
Евгений
Викторович
<
[email protected]>
Этот
перевод
является
бесплатной
документацией;
прочитайте
Стандартную
общественную
лицензию GNU
версии 3
или более
позднюю,
чтобы
узнать об
условиях
авторского
права. Мы не
несем
НИКАКОЙ
ОТВЕТСТВЕННОСТИ.
Если вы
обнаружите
ошибки в
переводе
этой
страницы
руководства,
пожалуйста,
отправьте
электронное
письмо на
[email protected]