ELC in dev
ELC-lang
载入中...
搜索中...
未找到
elc::APIs::alloc 命名空间参考

alloc相关基础函数 更多...

命名空间

namespace  overhead_n
 

struct  default_operators_provider_t
 
struct  overheaded_operators_provider_t
 
struct  source_location_guard
 
struct  source_location_info_t
 

类型定义

typedef overheaded_operators_provider_t< default_operators_provider_talloc_operators_provider
 

函数

byte * aligned_alloc (size_t align, size_t size) noexcept
 
byte * realloc (byte *ptr, size_t nsize, size_t align) noexcept
 
void free (byte *p, size_t align) noexcept
 
size_t get_size_of_alloc (const byte *p, size_t align) noexcept
 

变量

struct elc::APIs::alloc::source_location_info_t operate_source_location
 
constexpr bool use_debug_alloc_lib
 

详细描述

alloc相关基础函数

类型定义说明

◆ alloc_operators_provider

函数说明

◆ aligned_alloc()

byte * elc::APIs::alloc::aligned_alloc ( size_t  align,
size_t  size 
)
inlinenoexcept

aligned_alloc 内存分配函数,需提供对齐需求 return空指针被允许 size被保证不为0

在文件 all_defs.cpp14240 行定义.

14240 {
14241 push_and_disable_msvc_warning(26494);//未初始化警告diss
14242 void* aret;//返回值放这里
14244
14245 aret=alloc_operators_provider::aligned_alloc(align,size);
14246
14247 #if defined(ELC_TEST_COUNT_MEMORY_ALLOC)
14248 if(aret){
14249 count_info::alloc_count++;
14250 count_info::alloc_size+=size;
14251 count_info::update_memory_using(size);
14252 }
14253 #endif
14254
14255 return(byte*)aret;
14256 }
#define pop_msvc_warning()
Definition all_defs.cpp:478
#define push_and_disable_msvc_warning(...)
Definition all_defs.cpp:479
函数调用图:
这是这个函数的调用关系图:

◆ free()

void elc::APIs::alloc::free ( byte *  p,
size_t  align 
)
inlinenoexcept

free 释放所分配的内存 传入需获取大小的数据块起始点与对齐

在文件 all_defs.cpp14287 行定义.

14287 {
14288 #if defined(ELC_TEST_COUNT_MEMORY_ALLOC)
14289 const auto size=get_size_of_alloc(p,align);
14290 count_info::free_count++;
14291 count_info::free_size+=size;
14292 count_info::update_memory_using(-ptrdiff_t(size));
14293 #endif
14294
14295 alloc_operators_provider::aligned_free(p,align);
14296 }
这是这个函数的调用关系图:

◆ get_size_of_alloc()

size_t elc::APIs::alloc::get_size_of_alloc ( const byte *  p,
size_t  align 
)
inlinenoexcept

get_size_of_alloc 获取数据块的大小 传入需获取大小的数据块起始点与对齐

在文件 all_defs.cpp14301 行定义.

14301 {
14302 return alloc_operators_provider::aligned_blocksize(p,align);
14303 }
这是这个函数的调用关系图:

◆ realloc()

byte * elc::APIs::alloc::realloc ( byte *  ptr,
size_t  nsize,
size_t  align 
)
inlinenoexcept

realloc 重新规划分配的大小 return空指针被允许,但ptr值必须保持有效以保证gc后再次realloc有效 new_size被保证不为0 align维持不变 但只允许在扩大数据块时可选的移动数据块

在文件 all_defs.cpp14264 行定义.

14264 {
14265 #if defined(ELC_TEST_COUNT_MEMORY_ALLOC)
14266 const auto osize=get_size_of_alloc(ptr,align);
14267 #endif
14268 push_and_disable_msvc_warning(26494);//未初始化警告diss
14269 void* aret;//返回值放这里
14271
14272 aret=alloc_operators_provider::aligned_realloc(ptr,nsize,align);
14273
14274 #if defined(ELC_TEST_COUNT_MEMORY_ALLOC)
14275 if(aret){
14276 count_info::alloc_size+=nsize-osize;
14277 count_info::update_memory_using(nsize-osize);
14278 }
14279 #endif
14280
14281 return(byte*)aret;
14282 }
这是这个函数的调用关系图:

变量说明

◆ operate_source_location

struct elc::APIs::alloc::source_location_info_t elc::APIs::alloc::operate_source_location

◆ use_debug_alloc_lib

constexpr bool elc::APIs::alloc::use_debug_alloc_lib
inlineconstexpr
初始值:
=
false

在文件 all_defs.cpp14142 行定义.