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

底层内存管理泛用类型的模板定义 更多...

命名空间

namespace  default_method
 

struct  alloc_t
 用于对特定类型进行alloc的类 更多...
 
struct  base_alloc_t
 所有alloc_t的基类 更多...
 
struct  copy_alloc_t
 对于特定类型的内存分配结果,获取分配大小并复制一份同样大小的内存 更多...
 
struct  free_t
 用于对特定类型进行free 更多...
 
struct  get_size_of_alloc_t
 用于自特定类型的内存分配结果获取分配大小 对于null_ptr,返回0 对于单个对象的分配,返回1 更多...
 
struct  realloc_t
 用于对特定类型进行realloc 更多...
 

函数

void the_alloc_method () noexcept=delete
 
template<typename T >
voidalloc_method (type_info_t< T >) noexcept
 
template<typename T >
voidalloc_method (type_info_t< T >, size_t size) noexcept
 
void the_get_size_of_alloc_method () noexcept=delete
 
template<typename T >
size_t get_size_of_alloc_method (const T *arg) noexcept
 
void the_free_method () noexcept=delete
 
template<typename T >
void free_method (T *arg) noexcept
 
void the_realloc_method () noexcept=delete
 
template<typename T >
voidrealloc_method (T *ptr, size_t new_size) noexcept
 

变量

template<class T >
constexpr alloc_t< T > alloc {}
 用于对特定类型进行alloc的类实例
 
constexpr struct elc::defs::memory::alloc_n::free_t free
 
constexpr struct elc::defs::memory::alloc_n::realloc_t realloc
 
constexpr struct elc::defs::memory::alloc_n::get_size_of_alloc_t get_size_of_alloc
 
constexpr struct elc::defs::memory::alloc_n::copy_alloc_t copy_alloc
 

详细描述

底层内存管理泛用类型的模板定义

函数说明

◆ alloc_method() [1/2]

template<typename T >
void * elc::defs::memory::alloc_n::alloc_method ( type_info_t< T >  )
inlinenoexcept

在文件 all_defs.cpp20829 行定义.

20829 {
20830 //return空指针被允许,会引起gc_for_alloc
20831 if constexpr(was_not_an_ill_form(the_alloc_method(type_info<T>)))
20832 return the_alloc_method(type_info<T>);
20833 else
20834 return default_method::alloc_method(type_info<T>);
20835 }
#define was_not_an_ill_form(...)
Definition all_defs.cpp:611
void the_alloc_method() noexcept=delete
函数调用图:

◆ alloc_method() [2/2]

template<typename T >
void * elc::defs::memory::alloc_n::alloc_method ( type_info_t< T >  ,
size_t  size 
)
inlinenoexcept

在文件 all_defs.cpp20837 行定义.

20837 {
20838 //return空指针被允许,会引起gc_for_alloc
20839 //size被保证不为0
20840 if constexpr(was_not_an_ill_form(the_alloc_method(type_info<T>,size)))
20841 return the_alloc_method(type_info<T>,size);
20842 else
20843 return default_method::alloc_method(type_info<T>,size);
20844 }
函数调用图:

◆ free_method()

template<typename T >
void elc::defs::memory::alloc_n::free_method ( T *  arg)
inlinenoexcept

在文件 all_defs.cpp20856 行定义.

20856 {
20857 if constexpr(was_not_an_ill_form(the_free_method(arg)))
20858 the_free_method(arg);
20859 else
20860 default_method::free_method(arg);
20861 }
void the_free_method() noexcept=delete
函数调用图:

◆ get_size_of_alloc_method()

template<typename T >
size_t elc::defs::memory::alloc_n::get_size_of_alloc_method ( const T *  arg)
inlinenoexcept

在文件 all_defs.cpp20847 行定义.

20847 {
20848 //arg保证不与null_ptr相等
20850 return the_get_size_of_alloc_method(arg);
20851 else
20852 return default_method::get_size_of_alloc_method(arg);
20853 }
void the_get_size_of_alloc_method() noexcept=delete
函数调用图:

◆ realloc_method()

template<typename T >
void * elc::defs::memory::alloc_n::realloc_method ( T *  ptr,
size_t  new_size 
)
inlinenoexcept

在文件 all_defs.cpp20864 行定义.

20864 {
20865 //return空指针被允许,会引起gc_for_alloc,但ptr值必须保持有效以保证gc_for_alloc后再次realloc有效
20866 //new_size被保证不为0
20867 //align维持不变
20868 //但只允许在扩大数据块时可选的移动数据块
20869 if constexpr(was_not_an_ill_form(the_realloc_method(ptr,new_size)))
20870 return the_realloc_method(ptr,new_size);
20871 else
20872 return default_method::realloc_method(ptr,new_size);
20873 }
void the_realloc_method() noexcept=delete
函数调用图:

◆ the_alloc_method()

void elc::defs::memory::alloc_n::the_alloc_method ( )
deletenoexcept
这是这个函数的调用关系图:

◆ the_free_method()

void elc::defs::memory::alloc_n::the_free_method ( )
deletenoexcept
这是这个函数的调用关系图:

◆ the_get_size_of_alloc_method()

void elc::defs::memory::alloc_n::the_get_size_of_alloc_method ( )
deletenoexcept
这是这个函数的调用关系图:

◆ the_realloc_method()

void elc::defs::memory::alloc_n::the_realloc_method ( )
deletenoexcept
这是这个函数的调用关系图:

变量说明

◆ alloc

template<class T >
constexpr alloc_t<T> elc::defs::memory::alloc_n::alloc {}
constexpr

用于对特定类型进行alloc的类实例

参见
alloc_t
警告
不会对内存进行初始化,如需要进行new like操作,请使用 get_t

在文件 all_defs.cpp20911 行定义.

20911{};

◆ copy_alloc

constexpr struct elc::defs::memory::alloc_n::copy_alloc_t elc::defs::memory::alloc_n::copy_alloc

◆ free

constexpr struct elc::defs::memory::alloc_n::free_t elc::defs::memory::alloc_n::free

◆ get_size_of_alloc

constexpr struct elc::defs::memory::alloc_n::get_size_of_alloc_t elc::defs::memory::alloc_n::get_size_of_alloc

◆ realloc

constexpr struct elc::defs::memory::alloc_n::realloc_t elc::defs::memory::alloc_n::realloc