C语言宏与强制类型转换的妙用
来源:互联网 发布:查网站域名是否被注册 编辑:程序博客网 时间:2024/05/29 18:11
typedef struct
{ MemHead* pPre; MemHead* pNext; char *File; char *Line;}MemHead;
static MemHead *pHead = NULL;
void *MallocDebug(char *pcFile, char *pcLine, unsigned int uiSize)
{
char *pcTemp = Malloc(uiSize + sizeof(MemHead));
MemHead *pcTempHead = (MemHead*)pcTemp;
pcTempHead->pcFile = pcFile;
pcTempHead->pcLine = pcLine;
{
将pcTempHead 插入到以pHead为头结点中的双向链表中去;
}
return (void *)(pcTemp + sizeof(MemHead));
}
void FreeDebug(void *ptr)
{
char *pcTemp = ptr - sizeof(MemHead);
MemHead *pTempHead = (MemHead *)pcTemp;
{
将pTempHead从双向链表中取下;
}
Free(ptr);
}
#define Malloc(x) MallocDebug(_FILE_,_LINE_,x)
#define Free(ptr)FreeDebug(ptr)
在此,还缺少一些细节方面,和一个检测的打印函数,留给读者思考,就不详述了。此段代码,个人认为,最为有特点的一是使用宏替换,这样,可以最简便地将代码中Malloc内存的地方取到。第二,用一个强制类型转换,将我们要的MemHead节点与函数调用Malloc内存分配所需的内存连接到一处去,从而达到了两点:一,降低了系统开销,无需再给MemHead链表单独分配一段内存;二,不需要一个ptr指向所需分配的地址,从而在FreeDebug中无需再查找一边,降低系统开销,也增加了代码的可读性。
以上两点,仅为抛砖引玉。希望能对读者有一丝启发。也请大牛不吝指教!
- C语言宏与强制类型转换的妙用
- C语言类型强制转换
- C语言强制类型转换
- C语言类型强制转换
- C语言强制类型转换
- python类型强制转换与C语言对比
- [强制类型转换]C语言中的强制类型转换相关
- C语言的强制类型转换的用法
- C和C++语言的强制类型转换 Type Cast
- C语言中int到float的强制类型转换
- C语言中int到float的强制类型转换
- C语言中强制类型转换的总结
- C语言结构体的强制类型转换
- c语言指针强制类型转换的应用
- C语言中强制类型转换总结
- C语言指针强制类型转换
- C语言指针强制类型转换
- C语言指针强制类型转换
- 看openflow中链表的组织方式
- JNI调用c++函数,该函数的参数是结构体(——对象的传递)
- Fedora13 安装Google浏览器出错及其解决办法
- linux 经典命令(一)
- 程序员新年要做的10个决定
- C语言宏与强制类型转换的妙用
- 算法问题《Card Game》的数学模型和Java实现
- 编写时间的类函数
- 别放弃每一次的进步
- 第三周实验报告1
- A*寻路算法c语言实现(2012.3.7更新,修正bug)
- Win7以管理员方式运行cmd.exe
- c++与c#的比较
- 从 SQL Server 到 My SQL