问答

C语言什么时候用malloc获取动态内存?

作者:admin 2021-06-21 我要评论

记得大学时候学过一段时间C,里面的代码并不需要malloc就可以运行,比如直接定义一个数组,一个int. 什么时候需要写这个函数? ### 函数里直接定义数组,数组的...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

记得大学时候学过一段时间C,里面的代码并不需要malloc就可以运行,比如直接定义一个数组,一个int.
什么时候需要写这个函数?

###

函数里直接定义数组,数组的内存分配在栈stack里面,函数返回数组内存就会被释放,malloc的内存分配在堆heap里面,函数返回后heap分配的内存不会自动释放,需要手工调用free。malloc分配内存开销比数组大,速度慢。

一般的,如果你的内存需要函数返回后还继续使用,必须用malloc。否则,可以用局部数组,这样效率高速度快而且还不用麻烦手工释放内存。

###

在实际问题中,为了合理利用内存,你不能总是使用足够大的内存去保存数据(实际上当你的数组定义得太大,编译器会报错),此时就需要动态分配内存。例如你要定义一个数组,但数组长度不定,需要从键盘输入,就可以用malloc函数。

又比如,链表的插入,删除比数组快很多,你使用链表时插入一个节点,也可以用malloc函数为节点分配一个内存。当然你也可以使用静态链表,但它性能不及普通链表。

实际上,C语言中实现很多数据结构都需要用指针实现,而它们的数据存储通常与动态内存分配有关。

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • C语言什么时候用malloc获取动态内存?

    C语言什么时候用malloc获取动态内存?

  • Flink webui中不显示日志和输出

    Flink webui中不显示日志和输出

  • vue element admin的export-excel.vue

    vue element admin的export-excel.vue

  • useEffect清除副作用带第二个参数,反

    useEffect清除副作用带第二个参数,反

腾讯云代理商
海外云服务器