我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:大丰收高手论坛 > 动态分配 >

C语言中动态内存分配函数的用法及作用?(比如malloccallocre等

归档日期:07-04       文本归类:动态分配      文章编辑:爱尚语录

  C语言中动态内存分配函数的用法及作用?(比如malloc,calloc,realloc等)

  C语言中动态内存分配函数的用法及作用?(比如malloc,calloc,realloc等)

  我是个C的初学者,专业是嵌入式方向,但目前还没有学嵌入式,想自己把C学深入。不知道这个动态内存是什么意思?有什么作用?还有就是malloc,calloc,realloc这几个函数的用法及意义,最...

  我是个C的初学者,专业是嵌入式方向,但目前还没有学嵌入式,想自己把C学深入。

  还有就是malloc,calloc,realloc这几个函数的用法及意义,最好能举个例子哈,网上官方的例子和解释就不要复制了,我看了很多了,不怎么看得懂,要是加上一些人情注释就更感谢了。

  这么再给大家说一下吧:我现在不明白C语言中动态内存分配的意义和作用,计算机不是自动分配内存的吗?其次才是那几个动态内存分配函数的用法。 谢谢各位了! 回答好了加分,我这里分足展开我来答

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  展开全部先举个例子:某用户需要一个将任意多个整数按大小排序的程序。(在计算机文件夹中,当文件很多时经常用到排序)

  1。若不用动态分配内存,那就定义一个超大的数组吧!问题是,如果用户不需要那么大,不就浪费了?如果定义的数组还不够大,不就不能满足需求了?

  2。如果用动态分配,就解决上述问题了。当你需要多大内存时,就给你多大——如果有的话——这就是动态分配的意义。

  调用calloc函数时,calloc(n,sizeof(int))表示请求n个连续的、每个长度为整型的空间,若成功返回这些空间的首地址。(int *)表示将这个地址放在指针中。到此为止,就可以用指针来对分配到的空间操作了。注意,最后一定要用free函数释放申请到的空间,否则这部分空间会一直占着。

  1。malloc(n*sizeof(int)) /* 请求n个连续的、每个长度为整型的空间,若成功返回这些空间的首地址,失败返回0 */

  2。calloc(n,sizeof(int)) /* 请求n个连续的、每个长度为整型的空间,若成功返回这些空间的首地址并将每个空间赋值为0,失败返回0 */

  3。realloc(p,sizeof(int)*n) /* 给一个已经分配了地址的指针重新分配空间,参数p为原有的空间地址,sizeof(int)*n是重新申请的地址长度,用于分配不足的时候。个人觉得没用——不够就找到原分配处改大一点不就行了?! */

  我能说得只有这些了,有些东西看起来麻烦,当你小试一下就会发现,不过如此嘛!学C要多练、多思,不怕麻烦。不知道您学了递归没有?有个经典的“汉诺塔”问题,那家伙——得整死人啊!到现在我还一知半解的……

  知道合伙人互联网行家采纳数:20203获赞数:50679专业C/C++软件开发向TA提问展开全部根据使用函数不同,作用各不相同。共同点均是动态分配一段内存,使用后需要用free函数释放。所有动态分配函数均声明在stdlib.h中。

  如果分配成功则返回指向被分配内存的指针(此存储区中的初始值不确定),否则返回空指针NULL。当内存不再使用时,应使用free()函数将内存块释放。函数返回的指针一定要适当对齐,使其可以用于任何数据对象。

  关于该函数的原型,在以前malloc返回的是char型指针,新的ANSIC标准规定,该函数返回为void型指针,因此必要时要进行类型转换。

  在内存的动态存储区中分配n个长度为size的连续空间,函数返回一个指向分配起始地址的指针;如果分配不成功,返回NULL。

  calloc在动态分配完内存后,自动初始化该内存空间为零,而malloc不初始化,里边数据是随机的垃圾数据。

  先判断当前的指针是否有足够的连续空间,如果有,扩大mem_address指向的地址,并且将mem_address返回,如果空间不够,先按照newsize指定的大小分配空间,将原有数据从头到尾拷贝到新分配的内存区域,而后释放原来mem_address所指内存区域(注意:原来指针是自动释放,不需要使用free),同时返回新分配的内存区域的首地址。即重新分配存储器块的地址。

本文链接:http://quangdungfc.net/dongtaifenpei/493.html