acl  3.5.3.0
acl_malloc.h 文件参考
#include "acl_define.h"
+ acl_malloc.h 的引用(Include)关系图:
+ 此图展示该文件直接或间接的被哪些文件引用了:

浏览源代码.

宏定义

#define ALIGN_TYPE   size_t
 
#define ACL_MEMPOOL_CTL_END   0
 
#define ACL_MEMPOOL_CTL_MUTEX   1
 
#define ACL_MEMPOOL_CTL_DISABLE   2
 

函数

ACL_API int * acl_memory_debug_start (void)
 
ACL_API void acl_memory_debug_stop (void)
 
ACL_API void acl_memory_debug_stack (int onoff)
 
ACL_API void acl_memory_stat (void)
 
ACL_API void acl_memory_alloc_stat (void)
 
ACL_API void acl_mempool_open (size_t max_size, int use_mutex)
 
ACL_API void acl_mempool_close (void)
 
ACL_API void acl_mempool_ctl (int name,...)
 
ACL_API int acl_mempool_total_allocated (void)
 
ACL_API void acl_mempool_status (void)
 
ACL_API void acl_default_memstat (const char *filename, int line, void *ptr, size_t *len, size_t *real_len)
 
ACL_API void acl_default_meminfo (void)
 
ACL_API void acl_default_set_memlimit (size_t len)
 
ACL_API size_t acl_default_get_memlimit (void)
 
ACL_API void * acl_default_malloc (const char *filename, int line, size_t size)
 
ACL_API void * acl_default_calloc (const char *filename, int line, size_t nmemb, size_t size)
 
ACL_API void * acl_default_realloc (const char *filename, int line, void *ptr, size_t size)
 
ACL_API char * acl_default_strdup (const char *filename, int line, const char *str)
 
ACL_API char * acl_default_strndup (const char *filename, int line, const char *str, size_t len)
 
ACL_API void * acl_default_memdup (const char *filename, int line, const void *ptr, size_t len)
 
ACL_API void acl_default_free (const char *filename, int line, void *ptr)
 
ACL_API void * acl_malloc_glue (const char *filename, int line, size_t size)
 
ACL_API void * acl_calloc_glue (const char *filename, int line, size_t nmemb, size_t size)
 
ACL_API void * acl_realloc_glue (const char *filename, int line, void *ptr, size_t size)
 
ACL_API char * acl_strdup_glue (const char *filename, int line, const char *str)
 
ACL_API char * acl_strndup_glue (const char *filename, int line, const char *str, size_t len)
 
ACL_API void * acl_memdup_glue (const char *filename, int line, const void *ptr, size_t len)
 
ACL_API void acl_free_glue (const char *filename, int line, void *ptr)
 
ACL_API void acl_free_fn_glue (void *ptr)
 

宏定义说明

◆ ACL_MEMPOOL_CTL_DISABLE

#define ACL_MEMPOOL_CTL_DISABLE   2

是否关闭内存池

在文件 acl_malloc.h50 行定义.

◆ ACL_MEMPOOL_CTL_END

#define ACL_MEMPOOL_CTL_END   0

结束标志

在文件 acl_malloc.h48 行定义.

◆ ACL_MEMPOOL_CTL_MUTEX

#define ACL_MEMPOOL_CTL_MUTEX   1

控制内存池是否加锁

在文件 acl_malloc.h49 行定义.

◆ ALIGN_TYPE

#define ALIGN_TYPE   size_t

在文件 acl_malloc.h21 行定义.

函数说明

◆ acl_calloc_glue()

ACL_API void* acl_calloc_glue ( const char *  filename,
int  line,
size_t  nmemb,
size_t  size 
)

◆ acl_default_calloc()

ACL_API void* acl_default_calloc ( const char *  filename,
int  line,
size_t  nmemb,
size_t  size 
)

ACL库中缺省的内存分配器接口, 分配内存并初始化所分配内存的内容为0 类似于标准库中的 calloc

参数
filename{const char*} 调用该函数的文件名,可以为空
line{int} 调用该函数所在源文件中的行数
nmemb{size_t} 内存块的个数
size{size_t} 每个内存块的大小
返回
{void*} 分配的可用地址, 如果分配失败,则内部会自动coredump 需要调用 acl_default_free 释放

◆ acl_default_free()

ACL_API void acl_default_free ( const char *  filename,
int  line,
void *  ptr 
)

释放由 acl_devault_xxx 所分配的内存动态内存

参数
filename{const char*} 调用该函数的文件名,可以为空
line{int} 调用该函数所在源文件中的行数

◆ acl_default_get_memlimit()

ACL_API size_t acl_default_get_memlimit ( void  )

获得当前所设置的内存分配最大报警值大小(内部缺省值是 100000000)

返回
{size_t}

◆ acl_default_malloc()

ACL_API void* acl_default_malloc ( const char *  filename,
int  line,
size_t  size 
)

ACL库中缺省的内存分配器接口, 分配内存但并不初始化所分配内存的内容 类似于标准库中的 malloc

参数
filename{const char*} 调用该函数的文件名,可以为空
line{int} 调用该函数所在源文件中的行数
size{size_t} 需要的内存大小
返回
{void*} 分配的可用地址, 如果分配失败,则内部会自动coredump 需要调用 acl_default_free 释放

◆ acl_default_memdup()

ACL_API void* acl_default_memdup ( const char *  filename,
int  line,
const void *  ptr,
size_t  len 
)

复制内存数据

参数
filename{const char*} 调用该函数的文件名,可以为空
line{int} 调用该函数所在源文件中的行数
ptr{const void*} 源内存地址
len{size_t} 源内存区域的长度
返回
{void*} 新复制的内存地址

◆ acl_default_meminfo()

ACL_API void acl_default_meminfo ( void  )

◆ acl_default_memstat()

ACL_API void acl_default_memstat ( const char *  filename,
int  line,
void *  ptr,
size_t *  len,
size_t *  real_len 
)

获得当前内存指针的一些状态信息,如该内存的实际大小与对外分配大小

参数
filename{const char*} 调用该函数的文件名,可以为空
line{int} 调用该函数所在源文件中的行数
ptr{void*} 动态分配的内存外部地址
len{size_t*} 存储该内存的外部可用大小
real_len{size*} 存储该内存的实际大小(因为内部有一些控制字节)

◆ acl_default_realloc()

ACL_API void* acl_default_realloc ( const char *  filename,
int  line,
void *  ptr,
size_t  size 
)

ACL库中缺省的内存分配器接口, 类似于标准库的 realloc

参数
filename{const char*} 调用该函数的文件名,可以为空
line{int} 调用该函数所在源文件中的行数
ptr{void*} 之前用ACL库所分配的内存地址
size{size_t} 需要的内存大小
返回
{void*} 分配的可用地址, 如果分配失败,则内部会自动coredump 需要调用 acl_default_free 释放

◆ acl_default_set_memlimit()

ACL_API void acl_default_set_memlimit ( size_t  len)

设置内存分配最大报警值,即当调用者分配的内存大小达到此报警值后,内部会自动 记录报警日志,同时将调用堆栈打印至日志中;内部缺少值是 100000000

参数
len{size_t} 最大报警值,该值必须 > 0

◆ acl_default_strdup()

ACL_API char* acl_default_strdup ( const char *  filename,
int  line,
const char *  str 
)

复制字符串,类似于标准库中的 strdup

参数
filename{const char*} 调用该函数的文件名,可以为空
line{int} 调用该函数所在源文件中的行数
str{const char*} 源字符串地址
返回
{char*} 新复制的字符串地址,需要调用 acl_default_free 释放

◆ acl_default_strndup()

ACL_API char* acl_default_strndup ( const char *  filename,
int  line,
const char *  str,
size_t  len 
)

复制字符串,但限制最大字符串长度,类似于标准库中的 strndup

参数
filename{const char*} 调用该函数的文件名,可以为空
line{int} 调用该函数所在源文件中的行数
str{const char*} 源字符串地址
len{size_t} 限制新字符串的最大长度值
返回
{char*} 新复制的字符串地址,需要调用 acl_default_free 释放

◆ acl_free_fn_glue()

ACL_API void acl_free_fn_glue ( void *  ptr)

◆ acl_free_glue()

ACL_API void acl_free_glue ( const char *  filename,
int  line,
void *  ptr 
)

◆ acl_malloc_glue()

ACL_API void* acl_malloc_glue ( const char *  filename,
int  line,
size_t  size 
)

◆ acl_memdup_glue()

ACL_API void* acl_memdup_glue ( const char *  filename,
int  line,
const void *  ptr,
size_t  len 
)

◆ acl_memory_alloc_stat()

ACL_API void acl_memory_alloc_stat ( void  )

◆ acl_memory_debug_stack()

ACL_API void acl_memory_debug_stack ( int  onoff)

◆ acl_memory_debug_start()

ACL_API int* acl_memory_debug_start ( void  )

◆ acl_memory_debug_stop()

ACL_API void acl_memory_debug_stop ( void  )

◆ acl_memory_stat()

ACL_API void acl_memory_stat ( void  )

◆ acl_mempool_close()

ACL_API void acl_mempool_close ( void  )

关闭内存池功能

◆ acl_mempool_ctl()

ACL_API void acl_mempool_ctl ( int  name,
  ... 
)

当内存池打开后,可以通过此函数控制内存池状态

◆ acl_mempool_open()

ACL_API void acl_mempool_open ( size_t  max_size,
int  use_mutex 
)

打开动态内存池功能

参数
max_size{size_t} 内存池最大空间大小,单位为字节
use_mutex{int} 内存池内部是否采用互斥锁,如果是多线程程序则应该 设置 use_mutex 为非0值

◆ acl_mempool_status()

ACL_API void acl_mempool_status ( void  )

将当前的内存池状态信息输出至日志或屏幕中

◆ acl_mempool_total_allocated()

ACL_API int acl_mempool_total_allocated ( void  )

当前内存池已经分配的内存大小

返回
{int} 已经分配的内存大小

◆ acl_realloc_glue()

ACL_API void* acl_realloc_glue ( const char *  filename,
int  line,
void *  ptr,
size_t  size 
)

◆ acl_strdup_glue()

ACL_API char* acl_strdup_glue ( const char *  filename,
int  line,
const char *  str 
)

◆ acl_strndup_glue()

ACL_API char* acl_strndup_glue ( const char *  filename,
int  line,
const char *  str,
size_t  len 
)