C语言中的malloc和free函数

来源:百度知道 编辑:UC知道 时间:2024/05/17 04:11:29
请问这2个函数必须要配对使用吗?
也就是说,我用了malloc开辟新的空间使用了之后
必须要用free函数释放吗?
这个的原理是什么? 为什么还需要释放啊?
不用free就不释放内存,会怎样?
关机之后才启动电脑,就自动释放吗?

一般我们常说的内存泄漏是指堆内存的泄漏。堆内存是指程序从堆中分配的,大小任意的(内存块的大小可以在程序运行期决定),使用完后必须显示释放的内存。应用程序一般使用malloc,realloc,new等函数从堆中分配到一块内存,使用完后,程序必须负责相应的调用free或delete释放该内存块,否则,这块内存就不能被再次使用,我们就说这块内存泄漏了。

不释放就永久占有你的那块内存,其他的变量也不能在申请到这块内存空间,相当于内存泄漏了,所以要释放,小程序不释放看似没有大问题,大程序就很讲究了,所以养成好习惯还是好的。

可以做实验,循环 malloc(),一次 1M,不要 free(),看机器内存什么时候会耗完
这样你就能明白不 free 的危害了
当然,小程序自己玩玩,不 free 就无所谓了

开辟就需要收回 因为内存并不是无限的会产生溢出问题啊 还有问题是 你是不是 每次运行 程序 就关机了呢