使用new分配存储空间后必须用delete释放吗,为什么?
实践测试了一下用new后无论用不用delete进行释放程序都可运行,求解
首先,delete 释放只是删除 new 所占用的内存,不delete 的情况下也可以使程序程序运行。这个有些像 main 函数最后的return 0,加不加上去都不影响程序的运行结果。
另外,从项目角度来说,如果你很多可以释放的内存未释放,就是导致内存空间减小,可能会影响程序运行效率。就好像 512GB 的手机内存,你刚买来时不进行手机内存清理也不会对你的运行速度产生影响,但如果用了好几年都没有清理空间,删除一些“无用”,delete 掉临时的 new ,释放内存,那么手机运行速度就会大打折扣。
因此,建议养成 释放一些不必要的空间占用的习惯,它会给你不期而遇的惊喜。
这是因为 new 操作会在堆上分配内存,而不是在栈上。如果不使用 delete 释放内存,可能会导致内存泄漏。即程序运行结束后,内存仍然被程序占用,导致系统资源浪费。