可以一次性销毁的头等堆。更多信息...
类型定义 | |
| typedef struct mi_heap_s | mi_heap_t |
| 头等堆的类型。 | |
函数 | |
| mi_heap_t * | mi_heap_new () |
| 创建一个可用于分配的新堆。 | |
| void | mi_heap_delete (mi_heap_t *heap) |
| 删除之前分配的堆。 | |
| void | mi_heap_destroy (mi_heap_t *heap) |
| 销毁堆,释放其所有已分配的块。 | |
| mi_heap_t * | mi_heap_set_default (mi_heap_t *heap) |
| 设置当前线程中用于 mi_malloc() 等函数的默认堆。 | |
| mi_heap_t * | mi_heap_get_default () |
| 获取用于 mi_malloc() 等函数的默认堆。 | |
| mi_heap_t * | mi_heap_get_backing () |
| 获取支持堆。 | |
| void | mi_heap_collect (mi_heap_t *heap, bool force) |
| 释放特定堆中的未处理资源。 | |
| void * | mi_heap_malloc (mi_heap_t *heap, size_t size) |
| 在特定堆中分配。 | |
| void * | mi_heap_malloc_small (mi_heap_t *heap, size_t size) |
| 在特定堆中分配一个小对象。 | |
| void * | mi_heap_zalloc (mi_heap_t *heap, size_t size) |
| 在特定堆中分配零初始化的内存。 | |
| void * | mi_heap_calloc (mi_heap_t *heap, size_t count, size_t size) |
| 在特定堆中分配 count 个零初始化的元素。 | |
| void * | mi_heap_mallocn (mi_heap_t *heap, size_t count, size_t size) |
| 在特定堆中分配 count 个元素。 | |
| char * | mi_heap_strdup (mi_heap_t *heap, const char *s) |
| 在特定堆中复制字符串。 | |
| char * | mi_heap_strndup (mi_heap_t *heap, const char *s, size_t n) |
| 在特定堆中复制长度至多为 n 的字符串。 | |
| char * | mi_heap_realpath (mi_heap_t *heap, const char *fname, char *resolved_name) |
| 使用特定的 heap 解析文件路径名以分配结果。 | |
| void * | mi_heap_realloc (mi_heap_t *heap, void *p, size_t newsize) |
| void * | mi_heap_reallocn (mi_heap_t *heap, void *p, size_t count, size_t size) |
| void * | mi_heap_reallocf (mi_heap_t *heap, void *p, size_t newsize) |
| void * | mi_heap_malloc_aligned (mi_heap_t *heap, size_t size, size_t alignment) |
| void * | mi_heap_malloc_aligned_at (mi_heap_t *heap, size_t size, size_t alignment, size_t offset) |
| void * | mi_heap_zalloc_aligned (mi_heap_t *heap, size_t size, size_t alignment) |
| void * | mi_heap_zalloc_aligned_at (mi_heap_t *heap, size_t size, size_t alignment, size_t offset) |
| void * | mi_heap_calloc_aligned (mi_heap_t *heap, size_t count, size_t size, size_t alignment) |
| void * | mi_heap_calloc_aligned_at (mi_heap_t *heap, size_t count, size_t size, size_t alignment, size_t offset) |
| void * | mi_heap_realloc_aligned (mi_heap_t *heap, void *p, size_t newsize, size_t alignment) |
| void * | mi_heap_realloc_aligned_at (mi_heap_t *heap, void *p, size_t newsize, size_t alignment, size_t offset) |
可以一次性销毁的头等堆。
| typedef struct mi_heap_s mi_heap_t |
头等堆的类型。
堆只能用于创建它的线程中的(重新)分配!但是,任何已分配的块都可以被任何其他线程释放。
| void * mi_heap_calloc | ( | mi_heap_t * | 堆, |
| size_t | 计数, | ||
| size_t | size ) |
在特定堆中分配 count 个零初始化的元素。
| void * mi_heap_calloc_aligned | ( | mi_heap_t * | 堆, |
| size_t | 计数, | ||
| size_t | size, | ||
| size_t | 对齐 ) |
| void * mi_heap_calloc_aligned_at | ( | mi_heap_t * | 堆, |
| size_t | 计数, | ||
| size_t | size, | ||
| size_t | 对齐, | ||
| size_t | 偏移量 ) |
| void mi_heap_collect | ( | mi_heap_t * | 堆, |
| bool | 强制 ) |
释放特定堆中的未处理资源。
| void mi_heap_delete | ( | mi_heap_t * | 堆 | ) |
删除之前分配的堆。
这将释放资源并将此堆中所有仍分配的块(高效地)迁移到默认堆。
如果 heap 是默认堆,则默认堆将设置为支持堆。
| void mi_heap_destroy | ( | mi_heap_t * | 堆 | ) |
销毁堆,释放其所有已分配的块。
请谨慎使用,因为它将释放堆中所有仍分配的块。然而,这可以是一种非常高效的一次性释放所有堆内存的方法。
如果 heap 是默认堆,则默认堆将设置为支持堆。
| mi_heap_t * mi_heap_get_backing | ( | ) |
获取支持堆。
支持堆是线程的初始默认堆,始终可用于分配。它不能被销毁或删除,除非线程退出。
| mi_heap_t * mi_heap_get_default | ( | ) |
| void * mi_heap_malloc | ( | mi_heap_t * | 堆, |
| size_t | size ) |
在特定堆中分配。
| void * mi_heap_malloc_aligned | ( | mi_heap_t * | 堆, |
| size_t | size, | ||
| size_t | 对齐 ) |
| void * mi_heap_malloc_aligned_at | ( | mi_heap_t * | 堆, |
| size_t | size, | ||
| size_t | 对齐, | ||
| size_t | 偏移量 ) |
| void * mi_heap_malloc_small | ( | mi_heap_t * | 堆, |
| size_t | size ) |
| void * mi_heap_mallocn | ( | mi_heap_t * | 堆, |
| size_t | 计数, | ||
| size_t | size ) |
在特定堆中分配 count 个元素。
| mi_heap_t * mi_heap_new | ( | ) |
创建一个可用于分配的新堆。
| void * mi_heap_realloc | ( | mi_heap_t * | 堆, |
| void * | p, | ||
| size_t | newsize ) |
| void * mi_heap_realloc_aligned | ( | mi_heap_t * | 堆, |
| void * | p, | ||
| size_t | newsize, | ||
| size_t | 对齐 ) |
| void * mi_heap_realloc_aligned_at | ( | mi_heap_t * | 堆, |
| void * | p, | ||
| size_t | newsize, | ||
| size_t | 对齐, | ||
| size_t | 偏移量 ) |
| void * mi_heap_reallocf | ( | mi_heap_t * | 堆, |
| void * | p, | ||
| size_t | newsize ) |
| void * mi_heap_reallocn | ( | mi_heap_t * | 堆, |
| void * | p, | ||
| size_t | 计数, | ||
| size_t | size ) |
| char * mi_heap_realpath | ( | mi_heap_t * | 堆, |
| const char * | fname, | ||
| char * | resolved_name ) |
使用特定的 heap 解析文件路径名以分配结果。
| char * mi_heap_strdup | ( | mi_heap_t * | 堆, |
| const char * | s ) |
在特定堆中复制字符串。
| char * mi_heap_strndup | ( | mi_heap_t * | 堆, |
| const char * | s, | ||
| size_t | n ) |
在特定堆中复制长度至多为 n 的字符串。
| void * mi_heap_zalloc | ( | mi_heap_t * | 堆, |
| size_t | size ) |
在特定堆中分配零初始化的内存。
| void * mi_heap_zalloc_aligned | ( | mi_heap_t * | 堆, |
| size_t | size, | ||
| size_t | 对齐 ) |
| void * mi_heap_zalloc_aligned_at | ( | mi_heap_t * | 堆, |
| size_t | size, | ||
| size_t | 对齐, | ||
| size_t | 偏移量 ) |