c语言中new和delete的使用

使用new分配存储空间后必须用delete释放吗,为什么?
实践测试了一下用new后无论用不用delete进行释放程序都可运行,求解

img

img

  1. delete释放它是为了节省内存
    你现在的程序使用的资源没那么大,所以你不释放不会影响你的程序运行
    但是如果你的程序规模很大,你全都不delete,内存一直占用,等内存被占满了,就有问题了
  2. 同时,如果你不delete容易造成内存泄漏,当你的程序运行结束后,如果没能把你new的内存释放掉, 那么这部分内存就会一直被它占用

首先,delete 释放只是删除 new 所占用的内存,不delete 的情况下也可以使程序程序运行。这个有些像 main 函数最后的return 0,加不加上去都不影响程序的运行结果。

另外,从项目角度来说,如果你很多可以释放的内存未释放,就是导致内存空间减小,可能会影响程序运行效率。就好像 512GB 的手机内存,你刚买来时不进行手机内存清理也不会对你的运行速度产生影响,但如果用了好几年都没有清理空间,删除一些“无用”,delete 掉临时的 new ,释放内存,那么手机运行速度就会大打折扣。
因此,建议养成 释放一些不必要的空间占用的习惯,它会给你不期而遇的惊喜。

这是因为 new 操作会在堆上分配内存,而不是在栈上。如果不使用 delete 释放内存,可能会导致内存泄漏。即程序运行结束后,内存仍然被程序占用,导致系统资源浪费。