搜索

C语言动态内存分配与自定义函数实现

gecimao 发表于 2019-07-12 14:55 | 查看: | 回复:

  动态内存分配malloc,relloc,free等函数,在main函数中能实现分配,扩展与释放,但在,独立的自定义函数中用malloc函数来分配后在main函数中吊用,在这过程中地址的的传递该怎么作,试...

  动态内存分配malloc,relloc,free等函数,在main函数中能实现分配,扩展与释放,但在,独立的自定义函数中用malloc函数来分配后在main函数中吊用,在这过程中地址的的传递该怎么作,试了很久怎么就不成功呢?请各位多多指教。

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

  知道合伙人互联网行家采纳数:20181获赞数:50949专业C/C++软件开发向TA提问展开全部

  2018-03-15展开全部根据使用函数不同,作用各不相同。共同点均是动态分配一段内存,使用后需要用free函数释放。所有动态分配函数均声明在stdlib.h中。

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

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

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

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

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

本文链接:http://hem-larm.com/dongtaicunchufenpei/973.html
随机为您推荐歌词

联系我们 | 关于我们 | 网友投稿 | 版权声明 | 广告服务 | 站点统计 | 网站地图

版权声明:本站资源均来自互联网,如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

Copyright @ 2012-2013 织梦猫 版权所有  Powered by Dedecms 5.7
渝ICP备10013703号  

回顶部