C语言多线程内存管理模块.doc

C语言多线程内存管理模块创新

C语言多线程内存管理模块 摘要:一个多线程动态内存管理模块,可以有效地检测C语言中内存泄漏和内存越界等错误。 原理 分配 通过重新改写内存分配函数,把调用时的信息保存在一个节点中,节点中包括此内存分配的首地址,大小以及分配所在的源文件、函数、行号,并用一个HASH表来保存所有节点。 越界检测 为了检测写越界的错误,在用户申请的内存前后各增加了一定大小的内存作为监测区域,并初始化成预定值(0xdeadbeef)。如果发生越界写操作时,预定值就会发生改变, 即可检测到越界操作错误。 释放 重新改写内存释放函数free,释放时节点从HASH表中删除并进行越界检测。 查看 手动调用show_memory()或show_memory_summary()查看内存使用情况并进行越界检测。 以下涉及内存分配和内存释放的函数被重新改写: malloc calloc realloc strdup strndup asprintf vasprintf HASH表如下图所示: 节点结构如下: static struct mm_region { struct mm_region *next; char file[40]; /* 分配所在的文件 */ char func[40]; /* 分配所在的函数 */ unsigned int lineno; /* 分配所在的行 */ size_

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档