备注

当将此malloc(3)实现用作共享库的一部分时,这些函数很有用,并且可以通过其他方法保存/还原堆内容。 GNU Emacs使用此技术来实现其"转储"功能。

挂钩函数指针永远不会被这些函数保存或恢复,只有两个例外:如果在调用malloc_get_state()时使用了malloc检查(请参阅mallopt(3)),则malloc_set_state()尽可能重置malloc检查挂钩;如果在记录状态下未使用malloc检查,但是调用者已请求malloc检查,则挂钩将重置为0。

说明

注意:这些功能在glibc 2.25版中已删除。

malloc_get_state()函数记录所有malloc(3)内部簿记变量的当前状态(但不记录堆的实际内容或malloc_hook(3)函数指针的状态)。该状态记录在通过malloc(3)动态分配的与系统相关的不透明数据结构中,并返回指向该数据结构的指针作为函数结果。 (释放(3)此内存是调用者的责任。)

malloc_set_state()函数将所有malloc(3)内部簿记变量的状态恢复为state指向的不透明数据结构中记录的值。

名称

malloc_get_state,malloc_set_state-记录和恢复malloc实现的状态

属性

有关本节中使用的术语的说明,请参见attribute(7)。

InterfaceAttributeValue
malloc_get_state(),malloc_set_state()Thread safetyMT-Safe

语法

#include <malloc.h>

void* malloc_get_state(void);

int malloc_set_state(void *state);

另外参见

malloc(3),mallopt(3)

返回值

成功时,malloc_get_state()返回一个指向新分配的不透明数据结构的指针。发生错误时(例如,无法为数据结构分配内存),malloc_get_state()返回NULL。

成功时,malloc_set_state()返回0。如果实现检测到状态未指向正确形成的数据结构,则malloc_set_state()返回-1。如果该实现检测到状态引用的数据结构的版本是此实现所未知的最新版本,则malloc_set_state()返回-2。

出版信息

这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/

遵循规范

这些功能是GNU扩展。

MALLOC_GET_STATE - Linux手册页

Linux程序员手册 第3部分
更新日期: 2017-09-15

日期:2019-08-20 18:00:51 来源:oir作者:oir