|
LAMMP 4.2.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*) |
| Copyright (C) 2026 HJimmyK(Jericho Knox) | |
| #define | realloc_func global_heap.realloc |
函数 | |
| 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 全局堆内存分配函数 | |
| int | lmmp_stack_deinit (void) |
| LAMMP 全局栈释放函数(通常不需要手动调用) | |
| int | lmmp_stack_init (size_t size) |
| LAMMP 全局栈初始化函数(通常不需要手动调用) | |
变量 | |
| _Thread_local lmmp_heap_allocator_t | global_heap |
| static _Thread_local int | heap_alloc_count = 0 |
| _Thread_local lmmp_memory_ctx | lmmp_tmpmem_ctx |
Copyright (C) 2026 HJimmyK(Jericho Knox)
This file is part of LAMMP.
LAMMP is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License (LGPL) as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.
This program is distributed WITHOUT ANY WARRANTY.
| void * lmmp_alloc | ( | size_t | size | ) |
内存分配函数(调用lmmp_heap_alloc_fn)
| size | 要分配的内存字节数 |
引用了 heap_alloc_count, heap_alloc_func, lmmp_chech_memory() , 以及 n.
被这些函数引用 lmmp_fft_memstack_() , 以及 lmmp_strong_rng_init_().
函数调用图:
这是这个函数的调用关系图:| int lmmp_alloc_count | ( | int | cnt | ) |
堆内存分配计数器(线程局部)
| cnt | 若不为0,则将堆内存计数器置为cnt |
引用了 heap_alloc_count , 以及 n.
引用了 LAMMP_ERROR_MEMORY_ALLOC_FAILURE, lmmp_abort() , 以及 n.
被这些函数引用 lmmp_alloc() , 以及 lmmp_realloc().
函数调用图:
这是这个函数的调用关系图:内存释放函数(调用lmmp_heap_free_fn)
| ptr | 要释放的内存指针 |
引用了 heap_alloc_count , 以及 heap_free_func.
被这些函数引用 lmmp_fft_memstack_(), lmmp_huff_tree_free_(), lmmp_mul_fft_(), lmmp_mul_fft_cache_(), lmmp_mul_fft_unbalance_(), lmmp_mullo_fft_(), lmmp_prime_cache_free_(), lmmp_prime_int_table_free_(), lmmp_strong_rng_free_() , 以及 lmmp_trialdiv_short_().
这是这个函数的调用关系图:(线程局部的)全局共享的动态分配的堆内存资源释放函数
引用了 lmmp_prime_int_table_free_() , 以及 lmmp_stack_deinit().
被这些函数引用 lmmp_set_heap_allocator().
函数调用图:
这是这个函数的调用关系图:全局初始化函数(线程局部的)
引用了 LAMMP_POOL_SIZE , 以及 lmmp_stack_init().
被这些函数引用 lmmp_set_heap_allocator().
函数调用图:
这是这个函数的调用关系图:内存泄漏检测器
| func | 泄漏发生的函数名 |
| line | 泄漏发生的行号 |
引用了 lmmp_memory_ctx::capacity, heap_alloc_count, LAMMP_ERROR_MEMORY_LEAK, lmmp_abort(), lmmp_tmpmem_ctx, n, lmmp_memory_ctx::pool_begin, lmmp_memory_ctx::pool_top, lmmp_memory_ctx::remain, lmmp_memory_ctx::stack_begin, lmmp_memory_ctx::stack_end, lmmp_memory_ctx::stack_top , 以及 t.
函数调用图:内存重分配函数(调用lmmp_realloc_fn)
| ptr | 已分配的内存指针 |
| size | 新的内存大小(字节) |
引用了 lmmp_chech_memory(), n , 以及 realloc_func.
被这些函数引用 lmmp_strong_rng_extern_().
函数调用图:
这是这个函数的调用关系图:| void lmmp_set_heap_allocator | ( | const lmmp_heap_allocator_t * | heap | ) |
设置 LAMMP 全局堆内存分配函数
| heap | 新的堆内存分配器,可以为NULL,此时会直接返回,而不进行任何操作。 |
引用了 global_heap, lmmp_global_deinit(), lmmp_global_init(), lmmp_leak_tracker , 以及 n.
函数调用图:| int lmmp_stack_deinit | ( | void | ) |
LAMMP 全局栈释放函数(通常不需要手动调用)
引用了 lmmp_memory_ctx::capacity, heap_free_func, lmmp_tmpmem_ctx, n, lmmp_memory_ctx::pool_begin, lmmp_memory_ctx::pool_top, lmmp_memory_ctx::remain, lmmp_memory_ctx::stack_begin, lmmp_memory_ctx::stack_end , 以及 lmmp_memory_ctx::stack_top.
被这些函数引用 lmmp_global_deinit().
这是这个函数的调用关系图:| int lmmp_stack_init | ( | size_t | size | ) |
LAMMP 全局栈初始化函数(通常不需要手动调用)
引用了 lmmp_memory_ctx::capacity, heap_alloc_func, heap_free_func, LAMMP_DEFAULT_STACK_SIZE, LAMMP_ERROR_MEMORY_ALLOC_FAILURE, LAMMP_MAX_ALIGN, lmmp_abort(), lmmp_tmpmem_ctx, n, lmmp_memory_ctx::pool_begin, lmmp_memory_ctx::pool_top, lmmp_memory_ctx::remain, lmmp_memory_ctx::stack_begin, lmmp_memory_ctx::stack_end , 以及 lmmp_memory_ctx::stack_top.
被这些函数引用 lmmp_global_init().
函数调用图:
这是这个函数的调用关系图:| _Thread_local lmmp_heap_allocator_t global_heap |
被这些函数引用 lmmp_set_heap_allocator(), lmmp_temp_heap_alloc_() , 以及 lmmp_temp_heap_free_().
|
static |
被这些函数引用 lmmp_alloc(), lmmp_alloc_count(), lmmp_free() , 以及 lmmp_leak_tracker().
| _Thread_local lmmp_memory_ctx lmmp_tmpmem_ctx |
被这些函数引用 lmmp_leak_tracker(), lmmp_stack_deinit(), lmmp_stack_init(), lmmp_temp_pool_alloc_(), lmmp_temp_pool_free_(), lmmp_temp_stack_alloc_() , 以及 lmmp_temp_stack_free_().