C语言中的malloc和free函数

请问这2个函数必须要配对使用吗?
也就是说,我用了malloc开辟新的空间使用了之后
必须要用free函数释放吗?
这个的原理是什么? 为什么还需要释放啊?
不用free就不释放内存,会怎样?
关机之后才启动电脑,就自动释放吗?

malloc
向系统申请分配指定size个字节的内存空间。返回类型是
void*
类型。void*
表示未确定类型的指针。C,C++规定,void*
类型可以强制转换为任何其它类型的指针。
通俗讲就是一个分配空间的函数,在头文件”stdlib“内,给一个变量或指针分配一定大小的空间,一般要与size一起用。他的返回值是用处不大。
free是一个释放空间的函数,经malloc等函数分配空间后,取消其空间就用free函数。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-01-13
可以用,两者的区别在于,一个是创建静态内存,一个是动态内存。
只是你要做成服务程序或者有基于这个数组的算法时,别忘记用完p之后要free(),并且让p=(int*)null
第2个回答  2009-04-09
一般我们常说的内存泄漏是指堆内存的泄漏。堆内存是指程序从堆中分配的,大小任意的(内存块的大小可以在程序运行期决定),使用完后必须显示释放的内存。应用程序一般使用malloc,realloc,new等函数从堆中分配到一块内存,使用完后,程序必须负责相应的调用free或delete释放该内存块,否则,这块内存就不能被再次使用,我们就说这块内存泄漏了。本回答被提问者采纳
第3个回答  2009-04-09
不释放就永久占有你的那块内存,其他的变量也不能在申请到这块内存空间,相当于内存泄漏了,所以要释放,小程序不释放看似没有大问题,大程序就很讲究了,所以养成好习惯还是好的。
第4个回答  2009-04-09
可以做实验,循环 malloc(),一次 1M,不要 free(),看机器内存什么时候会耗完
这样你就能明白不 free 的危害了
当然,小程序自己玩玩,不 free 就无所谓了
相似回答