欢迎来到天天文库
浏览记录
ID:50823829
大小:36.73 KB
页数:2页
时间:2020-03-15
《c语言malloc函数的使用.docx》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、C语言malloc的使用浅谈参考文献:C_FreeAPI文档在c语言的编程中常常要对内存操作,而这对不少人来说是个不简单的问题。最近在做作业的过程中常常看到在用到存储结构的地方常常有malloc的身影,我就在想到底什么时候什么地方该用到malloc经过在百度和狗狗的一番搜搜之后在下的愚见总结如下:一、使用malloc的情况首先说明一下,由malloc动态申请的内存空间是堆式的内存空间。而静态的内存的空间是栈式的。有关堆栈的知识请参考其他相关资料。1.大容量内存需求网上说当我们需要的内存空间超过0
2、.5兆的时候最好使用动态内存,也就是利用malloc来申请内存空间。可以这么认为,如果内存过大,就会不易管理,而malloc可以说事一个专业的内存管理者,但静态的则可以当成是一个业余的。毕竟术业有专攻。2.不确定内存需求当我们需要的内存空间大小连我们自己也不知道的时候。为了不使内存空间的浪费。我们需要用到malloc函数。可以这样理解如果说静态的内存空间是一个铁盒子的话那么动态内存空间就可以看作是可伸缩的袋子,它的容量可以根据你所装物体的体积不同而定制。当然我们也可以利用静态内存,这样会有两种可
3、能出现的结果,一是你所申请的空间不够用,程序异常。二是申请的内存过大,浪费。3.备注二、如何科学使用malloc1.申请calloc语法:#includevoid*calloc(size_tnum,size_tsize);功能:函数返回一个指向num数组空间,每一数组元素的大小为size。如果错误发生返回NULL。malloc#includevoid*malloc(size_tsize);功能:函数指向一个大小为size的空间,如果错误发生返回NULL。存
4、储空间的指针必须为堆,不能是栈。这样以便以后用free函数释放空间。例如:typedefstructdata_type{intage;charname[20];}data;data*bob;bob=(data*)malloc(sizeof(data));if(bob!=NULL){bob->age=22;strcpy(bob->name,"Robert");printf("%sis%dyearsold",bob->name,bob->age);}free(bob);realloc语法:#in
5、cludevoid*realloc(void*ptr,size_tsize);功能:函数将ptr对象的储存空间改变为给定的大小size。参数size可以是任意大小,大于或小于原尺寸都可以。返回值是指向新空间的指针,如果错误发生返回NULL。1.释放free语法:#includevoidfree(void*ptr);功能:函数释放指针ptr指向的空间,以供以后使用。指针ptr必须由先前对malloc(),calloc(),realloc()的调用返回。例如:
6、typedefstructdata_type{intage;charname[20];}data;data*willy;willy=(data*)malloc(sizeof(willy));...free(willy);
此文档下载收益归作者所有