在运行时检查堆。更多...
数据结构 | |
结构 | mi_heap_area_t |
堆空间的一个区域包含单一大小的块。更多... | |
类型定义 | |
typedef bool | mi_block_visit_fun(const mi_heap_t *heap, const mi_heap_area_t *area, void *block, size_t block_size, void *arg) |
传递给mi_heap_visit_blocks()的访问器函数 | |
函数 | |
bool | mi_heap_contains_block (mi_heap_t *heap, const void *p) |
堆是否包含指向先前分配的块的指针? | |
bool | mi_heap_check_owned (mi_heap_t *heap, const void *p) |
安全检查任何指针是否属于堆。 | |
bool | mi_check_owned (const void *p) |
安全检查任何指针是否属于此线程的默认堆。 | |
bool | mi_heap_visit_blocks (const mi_heap_t *heap, bool visit_all_blocks, mi_block_visit_fun *visitor, void *arg) |
访问堆中的所有区域和块。 | |
bool | mi_abandoned_visit_blocks (mi_subproc_id_t subproc_id, int heap_tag, bool visit_blocks, mi_block_visit_fun *visitor, void *arg) |
访问废弃堆中的所有区域和块。 | |
在运行时检查堆。
struct mi_heap_area_t |
typedef bool mi_block_visit_fun(const mi_heap_t *heap, const mi_heap_area_t *area, void *block, size_t block_size, void *arg) |
传递给mi_heap_visit_blocks()的访问器函数
此函数总是首先为每个区域调用,其中block为NULL指针。如果visit_all_blocks为true,则该函数将为该区域中的每个已分配块调用。
bool mi_abandoned_visit_blocks | ( | mi_subproc_id_t | subproc_id, |
int | heap_tag, | ||
bool | visit_blocks, | ||
mi_block_visit_fun * | visitor, | ||
void * | arg ) |
访问废弃堆中的所有区域和块。
subproc_id | 与废弃堆关联的子进程ID。 |
heap_tag | 仅访问具有指定堆标签的废弃内存,使用-1访问所有废弃内存。 |
visit_blocks | 如果为true,则访问所有已分配的块,否则visitor仅针对每个堆区域调用。 |
visitor | 此函数为堆中的每个区域调用(block为NULL)。如果visit_all_blocks为true,visitor也为每个区域中每个已分配的块调用(`block!=NULL`)。从此函数返回false可提前停止访问。 |
arg | 传递给visitor的额外参数。 |
注意:需要在程序开始时设置选项`mi_option_visit_abandoned`。
bool mi_check_owned | ( | const void * | p | ) |
安全检查任何指针是否属于此线程的默认堆。
p | 任何指针——不要求先前由我们分配。 |
注意:昂贵的函数,与堆中的页数呈线性关系。
bool mi_heap_check_owned | ( | mi_heap_t * | heap, |
const void * | p ) |
安全检查任何指针是否属于堆。
heap | 堆。 |
p | 任何指针——不要求先前由我们分配。 |
注意:昂贵的函数,与堆中的页数呈线性关系。
bool mi_heap_contains_block | ( | mi_heap_t * | heap, |
const void * | p ) |
堆是否包含指向先前分配的块的指针?
heap | 堆。 |
p | 指向先前分配的块(在任何堆中)的指针——不能是随机指针! |
bool mi_heap_visit_blocks | ( | const mi_heap_t * | heap, |
bool | visit_all_blocks, | ||
mi_block_visit_fun * | visitor, | ||
void * | arg ) |
访问堆中的所有区域和块。
heap | 要访问的堆。 |
visit_all_blocks | 如果为true,则访问所有已分配的块,否则visitor仅针对每个堆区域调用。 |
visitor | 此函数为堆中的每个区域调用(block为NULL)。如果visit_all_blocks为true,visitor也为每个区域中每个已分配的块调用(`block!=NULL`)。从此函数返回false可提前停止访问。 |
arg | 传递给visitor的额外参数。 |