acl/lib_acl/include/stdlib/acl_mymalloc.h
zsxxsz cc05b877a2 first commit acl to github
first commit acl to github
2013-08-18 17:42:25 +08:00

88 lines
2.1 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* @file mymalloc.h
* @author zsx
* @date 2003-12-15
* @version 1.0
* @brief 本文件为使用ACL库时的高级内存分配接口用户应该主要使用此接口来
* 进行内存的分配及释放, 用户可以先行调用 acl_mem_hook.h 中的函数
* 接口注册自己的内存分配与释放等管理接口,这样再调用 acl_myxxx 类
* 的宏时便自动切换到用户自己的内存管理接口调用上
*/
#ifndef _ACL_MYMALLOC_INCLUDE_H_
#define _ACL_MYMALLOC_INCLUDE_H_
#ifdef __cplusplus
extern "C" {
#endif
#include "acl_define.h"
#include "acl_malloc.h"
/**
* 动态分配内存的宏定义,不初始化新分配的内存空间
* @param size {size_t} 分配长度
* @return {void *}
*/
#define acl_mymalloc(size) acl_malloc_glue(__FILE__, __LINE__, size)
/**
* 动态分配内存的宏定义,初始化新分配的内存空间为零
* @param nmemb {size_t} 元素个数
* @param size {size_t} 每个元素的长度
* @return {void *}
*/
#define acl_mycalloc(nmemb, size) acl_calloc_glue(__FILE__, __LINE__, nmemb, size)
/**
* 重新动态分配内存的宏定义
* @param ptr {void*} 原内存地址
* @param size {size_t} 新分配内存时要求的长度
* @return {void *}
*/
#define acl_myrealloc(ptr, size) acl_realloc_glue(__FILE__, __LINE__, (ptr), size)
/**
* 动态复制字符串宏定义
* @param str {const char*} 源字符串
* @return {char*} 新的字符串,需用 acl_myfree 释放
*/
#define acl_mystrdup(str) acl_strdup_glue(__FILE__, __LINE__, (str))
/**
* 动态复制字符串宏定义,并限定最大内存空间大小
* @param str {const char*} 源字符串
* @param len {size_t} 新字符串最大内存空间大小限制值
* @return {char*} 新的字符串,需用 acl_myfree 释放
*/
#define acl_mystrndup(str, len) acl_strndup_glue(__FILE__, __LINE__, (str), len)
/**
* 动态复制内存宏定义
* @param ptr {const void*} 源内存地址
* @param len {size_t} 源内存大小
* @return {void*} 新的字符串,需用 acl_myfree 释放
*/
#define acl_mymemdup(ptr, len) acl_memdup_glue(__FILE__, __LINE__, (ptr), len)
/**
* 释放动态分配的内存空间
* @param _ptr_ {void*} 动态内存地址
*/
#define acl_myfree(_ptr_) do { \
acl_free_glue(__FILE__, __LINE__, (_ptr_)); \
(_ptr_) = NULL; \
} while (0)
/**
* XXX: 因为该函数用于回调函数,所以无法进行宏定义转换, 将来再完善此函数
*/
#define acl_myfree_fn acl_free_fn_glue
#ifdef __cplusplus
}
#endif
#endif