【教学课件】第四章内存管理接口.ppt

上传人:wuy****n92 文档编号:80438873 上传时间:2023-03-23 格式:PPT 页数:19 大小:408.97KB
返回 下载 相关 举报
【教学课件】第四章内存管理接口.ppt_第1页
第1页 / 共19页
【教学课件】第四章内存管理接口.ppt_第2页
第2页 / 共19页
点击查看更多>>
资源描述

《【教学课件】第四章内存管理接口.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第四章内存管理接口.ppt(19页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第四章内存管理接口王兴隆一月 23本章内容malloccallocfreemmapmunmapmemsetmemcpymemmovememcmpmemchr内存控制内存控制内存操作内存操作malloc函数表头文件#include (或malloc.h)函数原型void*malloc(size_t size)函数功能配置内存空间函数输入malloc()用来配置内存空间,其大小由指定的size决定。函数返回值若配置成功则返回一指针,失败则返回NULL。相关函数calloc、freecalloc函数表头文件#include(或malloc.h)函数原型void*calloc(size_t nmemb

2、,size_t size);函数功能配置内存空间函数输入calloc()用来配置nmemb个相邻的内存单位,每一单位的大小为size,并返回指向第一个元素的指针。在利用calloc()配置内存时会将内存内容初始化为0。函数返回值 若配置成功则返回一指针,失败则返回NULL。相关函数malloc,free free函数表头文件#include(或malloc.h)函数原型void free(void*ptr)函数功能释放原先配置内存空间函数输入参数ptr为指向先前由malloc()、calloc()返回的指针。返回值若配置成功则返回一指针,失败则返回NULL。相关函数malloc,calloc

3、范例4.1#include#includevoid main()int*pa;int*pb;int i;pa=(int*)malloc(sizeof(int)*5);if(pa=NULL)exit(1);for(i=0;i 5;i+)printf(“%d ”,pai);/继续 printf(“n%d”,pa);free(pa);printf(“%dn”,pa);pa=NULL;pb=(int*)calloc(5,sizeof(int);for(i=0;i 5;i+)printf(“%d ”,pbi);free(pb);pb=NULL;4.1运行结果mmap函数munmap函数表头文件#incl

4、ude#include函数原型 int munmap(void*start,size_t length);函数功能 取消内存映射函数输入 munmap()用来取消参数start所指的映射内存起始地址,参数length则是内存大小。当进程结束或利用exec相关函数来执行其它程序时,映射内存会自动解除。返回值如果解除映射成功返回0,否则返回1 相关函数 mmap范例4.2#include#include#include#include#include void main()/利用mmap()来读取文件内容 int fd;void*start;struct stat sb;fd=open(“/hom

5、e/wxlong/OS/memory/test.txt”,O_RDONLY);/打开文件 fstat(fd,&sb);/获取文件大小 start=mmap(NULL,sb.st_size,PROT_READ,MAP_PRIVATE,fd,0);if(start=MAP_FAILED)/判断映射是否成功 return;printf(%s,start);munmap(start,sb.st_size);/解除映射 close(fd);memset函数表头文件#include函数原型 void*memset(void*s,int c,size_t n);函数功能 将一段内存空间填入某值 函数输入 m

6、emset()会将参数s所指的内存区域前n个字节以参数c填入,然后返回指向s的指针。返回值返回指向s的指针。特别说明 参数c虽声明为int,但必须是unsigned char,所以范围在0到255之间。范例4.3#include#include void main()char s5;memset(s,A,sizeof(s);s4=0;printf(%sn,s);输出结果:AAAAmemcpy函数表头文件#include函数原型 void*memcpy(void*dest,const void*src,size_t n);函数功能 拷贝内存内容函数输入 memcpy()用来拷贝src所指的内存内

7、容前n个字节到dest所指的内存地址上。返回值返回指向dest的指针。特别说明 指针src和dest所指的内存区域不可重叠。memmove函数表头文件#include函数原型void*memmove(void*dest,const void*src,size_t n);函数功能拷贝内存内容函数输入memmove()与memcpy()作用相同,并且允许src和dest所指区域重叠,不过效率略慢。memcmp函数表头文件#include函数原型 int memcmp(const void*s1,const void*s2,size_t n);函数功能 字符串比较函数输入 memcmp()用来比较s

8、1和s2所指的内存区间前n个字符。返回值若参数s1和s2所指的内存内容都完全相同则返回0值。s1的ASCII码序大于s2则返回大于0的值。s1若小于s2则返回小于0的值。memchr函数表头文件#include函数原型 void*memchr(const void*s,int c,size_t n);函数功能 字符查找函数输入 memchr()从头开始搜寻s所指的内存内容前n个字节,直到发现第一个值为c的字节,则返回指向该字节的指针。返回值如果找到指定的字节则返回该字节的指针,否则返回0。实验四C语言的realloc函数原型为void*realloc(void*p,int newsize),它

9、可以对给定的指针所指的空间进行扩大或者缩小,其工作原理可简单描述为:1、realloc申请newsize大小的空间;2、将p中的信息拷贝到新申请的空间中;3、将p原来所指的空间释放4、返回新申请的空间的首地址;根据上述工作原理,编写my_realloc函数模拟realloc。注意:my_realloc函数的参数可能与realloc不同,请根据需要自己设计my_realloc的参数评价标准1、my_realloc需要完成如下功能:可以实现空间的扩大和缩小;失败时,返回NULL,原内存不发生改变;传入的指针为NULL时,相当于malloc函数;newsize=0时,相当于free函数。2、实际调用realloc函数时,若newsize比原指针所指空间小,则返回的指针与原指针地址相同;若newsize比原指针所指空间大,返回的指针也有可能与原指针地址相同,请解释原因?谢谢大家!谢谢大家!

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁