acl  3.5.3.0
acl_mymalloc.h
浏览该文件的文档.
1 /*
2  * @file mymalloc.h
3  * @author zsx
4  * @date 2003-12-15
5  * @version 1.0
6  * @brief 本文件为使用ACL库时的高级内存分配接口,用户应该主要使用此接口来
7  * 进行内存的分配及释放, 用户可以先行调用 acl_mem_hook.h 中的函数
8  * 接口注册自己的内存分配与释放等管理接口,这样再调用 acl_myxxx 类
9  * 的宏时便自动切换到用户自己的内存管理接口调用上
10  */
11 
12 #ifndef ACL_MYMALLOC_INCLUDE_H
13 #define ACL_MYMALLOC_INCLUDE_H
14 
15 #ifdef __cplusplus
16 extern "C" {
17 #endif
18 
19 #include "acl_define.h"
20 #include "acl_malloc.h"
21 
22 /**
23  * 动态分配内存的宏定义,不初始化新分配的内存空间
24  * @param size {size_t} 分配长度
25  * @return {void *}
26  */
27 #define acl_mymalloc(size) acl_malloc_glue(__FILE__, __LINE__, size)
28 
29 /**
30  * 动态分配内存的宏定义,初始化新分配的内存空间为零
31  * @param nmemb {size_t} 元素个数
32  * @param size {size_t} 每个元素的长度
33  * @return {void *}
34  */
35 #define acl_mycalloc(nmemb, size) acl_calloc_glue(__FILE__, __LINE__, nmemb, size)
36 
37 /**
38  * 重新动态分配内存的宏定义
39  * @param ptr {void*} 原内存地址
40  * @param size {size_t} 新分配内存时要求的长度
41  * @return {void *}
42  */
43 #define acl_myrealloc(ptr, size) acl_realloc_glue(__FILE__, __LINE__, (ptr), size)
44 
45 /**
46  * 动态复制字符串宏定义
47  * @param str {const char*} 源字符串
48  * @return {char*} 新的字符串,需用 acl_myfree 释放
49  */
50 #define acl_mystrdup(str) acl_strdup_glue(__FILE__, __LINE__, (str))
51 
52 /**
53  * 动态复制字符串宏定义,并限定最大内存空间大小
54  * @param str {const char*} 源字符串
55  * @param len {size_t} 新字符串最大内存空间大小限制值
56  * @return {char*} 新的字符串,需用 acl_myfree 释放
57  */
58 #define acl_mystrndup(str, len) acl_strndup_glue(__FILE__, __LINE__, (str), len)
59 
60 /**
61  * 动态复制内存宏定义
62  * @param ptr {const void*} 源内存地址
63  * @param len {size_t} 源内存大小
64  * @return {void*} 新的字符串,需用 acl_myfree 释放
65  */
66 #define acl_mymemdup(ptr, len) acl_memdup_glue(__FILE__, __LINE__, (ptr), len)
67 
68 /**
69  * 释放动态分配的内存空间
70  * @param _ptr_ {void*} 动态内存地址
71  */
72 #define acl_myfree(_ptr_) do { \
73  if (_ptr_) { \
74  acl_free_glue(__FILE__, __LINE__, (_ptr_)); \
75  (_ptr_) = NULL; \
76  } \
77 } while (0)
78 
79 /**
80  * XXX: 因为该函数用于回调函数,所以无法进行宏定义转换, 将来再完善此函数
81  */
82 #define acl_myfree_fn acl_free_fn_glue
83 
84 #ifdef __cplusplus
85 }
86 #endif
87 
88 #endif