C语言中,malloc函数动态分配内存后,如果不用free去释放,函数结束后空间会不会由系统释放?

如果可以被系统释放,那么如果不用free去释放这个内存空间,那么在函数结束前与静态分配的空间一样,也相当于只是静态分配的空间了?

在程序中使用free释放,否则该段内存不会被释放掉。

C语言不会释放。所谓动态内存,是由malloc系列函数进行申请的内存,除非在程序中使用free释放,否则该段内存不会被释放掉。

标准库中malloc函数的实现原理。要了解针对malloc的内存存储结构,malloc不像全局变量一样,不是在编译器编译的时候就会分配内存空间,而是在调用到malloc函数时才会分配空间。有时还会中途调用free函数释放空间出来。

扩展资料

free:释放malloc分配的存储空间

malloc用于向系统申请一定数量的内存,如果你的程序一味的申请内存供自己使用,那么系统可分配给其它程序的内存就会减少,到最后无内存可用,最终导致系统运行缓慢,不稳定等问题。显然,这种只索取不奉献的行为是不可取的因此,C语言提供了free函数,用于向系统返还借用的内存。

当忘记使用free释放由malloc分配的内存时,表明程序存在”内存泄露“这一顽疾,因此对于上面的程序,在return 0之前,使用下面的代码进行完善。

参考资料来源:百度百科—c语言

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-08-20

C语言中,malloc函数动态分配内存后,函数结束后不会释放,程序结束后会由系统释放,相当于在堆区人为开辟了静态区域(占用的是堆区的空间),如果有重复分配(循环),会不断占用内存,直到程序结束。

C语言是一门面向过程、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。

尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括一些类似嵌入式处理器以及超级计算机等作业平台的许多计算机平台上进行编译。

扩展资料:

C语言的特点:

1、具有结构化的控制语句

C语言是一种结构化的语言,提供的控制语句具有结构化特征,如for语句、if⋯else语句和switch语句等。可以用于实现函数的逻辑控制,方便面向过程的程序设计。

2、丰富的数据类型

C语言包含的数据类型广泛,不仅包含有传统的字符型、整型、浮点型、数组类型等数据类型,还具有其他编程语言所不具备的数据类型,其中以指针类型数据使用最为灵活,可以通过编程对各种数据结构进行计算。

3、丰富的运算符

c语言包含34个运算符,它将赋值、括号等均视作运算符来操作,使C程序的表达式类型和运算符类型均非常丰富。

参考资料来源:百度百科-c语言

本回答被网友采纳
第2个回答  推荐于2018-03-04
不是这个样子的

malloc是从堆区申请空间,函数结束后不会自动释放,如果不人为地释放的话,要等到程序结束后,系统才会自动回收本回答被网友采纳
第3个回答  2012-02-27
malloc是从堆区申请空间,函数结束后不会自动释放,如果不调用free 去释放的话,要等到程序结束后,操作系统才会自动回收!

建议看看一些操作系统方面的书 例如,从window编到汇编语言
第4个回答  2012-02-27
是这样的,如果不释放,下次这段动态内存空间就无法再使用了,久而久之,容易造成内存泄露这样的问题本回答被提问者采纳
相似回答