电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

C语言多线程内存管理模块VIP免费

C语言多线程内存管理模块_第1页
1/18
C语言多线程内存管理模块_第2页
2/18
C语言多线程内存管理模块_第3页
3/18
下载后可任意编辑C 语言多线程内存管理模块摘要:一个多线程动态内存管理模块,可以有效地检测 C 语言中内存泄漏和内存越界等错误。1 原理分配通过重新改写内存分配函数,把调用时的信息保存在一个节点中,节点中包括此内存分配的首地址,大小以及分配所在的源文件、函数、行号,并用一个 HASH 表来保存所有节点。越界检测为了检测写越界的错误,在用户申请的内存前后各增加了一定大小的内存作为监测区域,并初始化成预定值(0xdeadbeef)。假如发生越界写操作时,预定值就会发生改变, 即可检测到越界操作错误。释放重新改写内存释放函数 free,释放时节点从 HASH 表中删除并进行越界检测。查看手动调用 show_memory()或 show_memory_summary()查看内存使用情况并进行越界检测。以下涉及内存分配和内存释放的函数被重新改写:1.malloc2.calloc3.realloc4.strdup5.strndup6.asprintf7.vasprintfHASH 表如下图所示:1下载后可任意编辑节点结构如下:static struct mm_region {struct mm_region *next;char file[40];/* 分配所在的文件 */char func[40];/* 分配所在的函数 */unsigned int lineno;/* 分配所在的行 */size_t len;/* 内存分配的大小 */unsigned int fence;/* 内存起始边界,用于头越界检测 */unsigned char data[0];/* 用户内存分配首地址,malloc等函数返回以此为首地址的len长度的一块内存 */} *regions[SOME_PRIME];内存中一条节点的结构:2下载后可任意编辑2 测试步骤:1.引入头文件:在需要检测的 C/C++文件中引入”mm.h”头文件;2.查看内存使用情况:调用 show_memory()函数查看本文件中内存泄漏详细情况,或调用 show_memory_summary()函数查看本文件中内存泄漏统计情况。3……nextfilefunclinenolenfence0xdeadbeefdatafence0xdeadbeef……mm_region内存起始边界检测头越界内存结束边界检测尾越界下载后可任意编辑2.1 内存泄漏2.1.1测试代码#include /* 加入头文件mm.h */#include "mm.h"int main(int argc, char *argv[]){char *mp = NULL;char *cp = NULL;mp = (char *)malloc(6);cp = (char *)calloc(1,10);/* 查看内存泄漏 */show_memory();show_memory_summary();return 0;}2.1.2测试结果4下载后可任意编辑2.2 内存越界2.2.1测试代码#include /* 加入头文件mm.h */#include "mm.h"int main(int argc, char *argv[...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

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

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部