|
LAMMP 4.1.0
Lamina High-Precision Arithmetic Library
|
#include "../../include/lammp/impl/mparam.h"#include "../../include/lammp/impl/prime_table.h"#include "../../include/lammp/impl/tmp_alloc.h"#include "../../include/lammp/lmmpn.h"#include "../../include/lammp/impl/safe_memory.h"
memory.c 的引用(Include)关系图:宏定义 | |
| #define | heap_alloc_func global_heap.alloc |
| #define | heap_free_func global_heap.free |
| #define | HSIZE sizeof(void*) |
| #define | realloc_func global_heap.realloc |
| #define | SIZE_SIZE LMMP_ROUND_UP_MULTIPLE(sizeof(size_t), LAMMP_MAX_ALIGN) |
| #define | stack_get_top_func() (lmmp_stack_top) |
| #define | stack_set_top_func(top) (lmmp_stack_top = top) |
函数 | |
| void * | lmmp_alloc (size_t size) |
| 内存分配函数(调用lmmp_heap_alloc_fn) | |
| int | lmmp_alloc_count (int cnt) |
| 堆内存分配计数器(线程局部) | |
| static void | lmmp_chech_memory (size_t size, const char *func, int line) |
| void | lmmp_free (void *ptr) |
| 内存释放函数(调用lmmp_heap_free_fn) | |
| void | lmmp_global_deinit (void) |
| (线程局部的)全局共享的动态分配的堆内存资源释放函数 | |
| void | lmmp_global_init (void) |
| 全局初始化函数(线程局部的) | |
| void | lmmp_leak_tracker (const char *func, int line) |
| 内存泄漏检测器 | |
| void * | lmmp_realloc (void *oldptr, size_t new_size) |
| 内存重分配函数(调用lmmp_realloc_fn) | |
| void | lmmp_set_heap_allocator (const lmmp_heap_allocator_t *heap) |
| 设置 LAMMP 全局堆内存分配函数 | |
| void * | lmmp_stack_alloc (size_t size) |
| 栈内存分配函数(使用stack_get_top和stack_set_top) | |
| void | lmmp_stack_free (void *ptr) |
| 栈内存释放函数(使用stack_get_top和stack_set_top) | |
| void | lmmp_stack_init (void) |
| LAMMP 全局栈初始化函数(通常不需要手动调用) | |
| void | lmmp_stack_reset (size_t size) |
| LAMMP 全局栈重置函数(通常不需要手动调用) | |
| void * | lmmp_temp_heap_alloc_ (void **pmarker, size_t size) |
| 临时堆内存分配函数 | |
| void | lmmp_temp_heap_free_ (void *marker) |
| 临时堆内存释放函数 | |
变量 | |
| static _Thread_local lmmp_heap_allocator_t | global_heap |
| static _Thread_local int | heap_alloc_count = 0 |
| _Thread_local void * | lmmp_stack_begin = NULL |
| _Thread_local void * | lmmp_stack_end = NULL |
| _Thread_local void * | lmmp_stack_top = NULL |
| #define SIZE_SIZE LMMP_ROUND_UP_MULTIPLE(sizeof(size_t), LAMMP_MAX_ALIGN) |
| #define stack_get_top_func | ( | ) | (lmmp_stack_top) |
| #define stack_set_top_func | ( | top | ) | (lmmp_stack_top = top) |
| void * lmmp_alloc | ( | size_t | size | ) |
内存分配函数(调用lmmp_heap_alloc_fn)
| size | 要分配的内存字节数 |
引用了 heap_alloc_count, heap_alloc_func , 以及 lmmp_chech_memory().
被这些函数引用 lmmp_fft_memstack_() , 以及 lmmp_strong_rng_init_().
函数调用图:
这是这个函数的调用关系图:| int lmmp_alloc_count | ( | int | cnt | ) |
堆内存分配计数器(线程局部)
| cnt | 若不为0,则将堆内存计数器置为cnt |
引用了 heap_alloc_count.
|
inlinestatic |
引用了 LAMMP_ERROR_MEMORY_ALLOC_FAILURE , 以及 lmmp_abort().
被这些函数引用 lmmp_alloc() , 以及 lmmp_realloc().
函数调用图:
这是这个函数的调用关系图:| void lmmp_free | ( | void * | ptr | ) |
内存释放函数(调用lmmp_heap_free_fn)
| ptr | 要释放的内存指针 |
引用了 heap_alloc_count , 以及 heap_free_func.
被这些函数引用 lmmp_fft_memstack_(), lmmp_limb_elem_mul_(), lmmp_mul_fft_(), lmmp_mul_fft_cache_(), lmmp_mul_fft_unbalance_(), lmmp_mullo_fft_(), lmmp_num_heap_free_(), lmmp_num_heap_mul_(), lmmp_prime_cache_free_(), lmmp_prime_int_table_free_(), lmmp_strong_rng_free_(), lmmp_trialdiv_short_() , 以及 lmmp_vec_elem_mul_().
这是这个函数的调用关系图:| void lmmp_global_deinit | ( | void | ) |
(线程局部的)全局共享的动态分配的堆内存资源释放函数
引用了 lmmp_prime_int_table_free_() , 以及 lmmp_stack_reset().
被这些函数引用 lmmp_set_heap_allocator().
函数调用图:
这是这个函数的调用关系图:| void lmmp_global_init | ( | void | ) |
全局初始化函数(线程局部的)
引用了 lmmp_stack_init().
被这些函数引用 lmmp_set_heap_allocator().
函数调用图:
这是这个函数的调用关系图:| void lmmp_leak_tracker | ( | const char * | func, |
| int | line | ||
| ) |
内存泄漏检测器
| func | 泄漏发生的函数名 |
| line | 泄漏发生的行号 |
引用了 heap_alloc_count, LAMMP_ERROR_MEMORY_LEAK, lmmp_abort(), lmmp_stack_begin, lmmp_stack_end , 以及 lmmp_stack_top.
函数调用图:| void * lmmp_realloc | ( | void * | ptr, |
| size_t | size | ||
| ) |
内存重分配函数(调用lmmp_realloc_fn)
| ptr | 已分配的内存指针 |
| size | 新的内存大小(字节) |
引用了 lmmp_chech_memory() , 以及 realloc_func.
被这些函数引用 lmmp_strong_rng_extern_().
函数调用图:
这是这个函数的调用关系图:| void lmmp_set_heap_allocator | ( | const lmmp_heap_allocator_t * | heap | ) |
设置 LAMMP 全局堆内存分配函数
| heap | 新的堆内存分配器,可以为NULL,表示使用默认的 malloc, free, realloc |
引用了 global_heap, heap_alloc_count, LAMMP_ERROR_MEMORY_LEAK, lmmp_abort(), lmmp_global_deinit() , 以及 lmmp_global_init().
函数调用图:| void * lmmp_stack_alloc | ( | size_t | size | ) |
栈内存分配函数(使用stack_get_top和stack_set_top)
| size | 要分配的内存字节数 |
引用了 LAMMP_ERROR_MEMORY_ALLOC_FAILURE, LAMMP_MAX_ALIGN, lmmp_abort(), LMMP_ROUND_UP_MULTIPLE, lmmp_stack_end, SIZE_SIZE, stack_get_top_func , 以及 stack_set_top_func.
函数调用图:| void lmmp_stack_free | ( | void * | ptr | ) |
栈内存释放函数(使用stack_get_top和stack_set_top)
| ptr | 要释放的内存指针 |
引用了 LAMMP_ERROR_MEMORY_FREE_FAILURE, lmmp_abort(), lmmp_stack_begin, lmmp_stack_end, SIZE_SIZE, stack_get_top_func , 以及 stack_set_top_func.
函数调用图:| void lmmp_stack_init | ( | void | ) |
LAMMP 全局栈初始化函数(通常不需要手动调用)
引用了 heap_alloc_func, LAMMP_DEFAULT_STACK_SIZE, lmmp_stack_begin, lmmp_stack_end , 以及 lmmp_stack_top.
被这些函数引用 lmmp_global_init().
这是这个函数的调用关系图:| void lmmp_stack_reset | ( | size_t | size | ) |
LAMMP 全局栈重置函数(通常不需要手动调用)
| size | 新的默认栈大小,单位为字节(不建议设置少于 256KB 的栈,少于此值可能导致栈溢出) |
引用了 heap_free_func, LAMMP_ERROR_MEMORY_ALLOC_FAILURE, LAMMP_ERROR_MEMORY_LEAK, lmmp_abort(), lmmp_stack_begin, lmmp_stack_end, lmmp_stack_top , 以及 realloc_func.
被这些函数引用 lmmp_global_deinit().
函数调用图:
这是这个函数的调用关系图:| void * lmmp_temp_heap_alloc_ | ( | void ** | pmarker, |
| size_t | size | ||
| ) |
临时堆内存分配函数
| pmarker | 标记 |
| size | 要分配的内存字节数 |
引用了 heap_alloc_func, HSIZE, LAMMP_MAX_ALIGN , 以及 LMMP_ROUND_UP_MULTIPLE.
| void lmmp_temp_heap_free_ | ( | void * | marker | ) |
临时堆内存释放函数
| marker | 要释放的临时内存标记 |
引用了 heap_free_func.
|
static |
被这些函数引用 lmmp_set_heap_allocator().
|
static |
| _Thread_local void* lmmp_stack_begin = NULL |
被这些函数引用 lmmp_leak_tracker(), lmmp_stack_free(), lmmp_stack_init() , 以及 lmmp_stack_reset().
| _Thread_local void* lmmp_stack_end = NULL |
| _Thread_local void* lmmp_stack_top = NULL |