我可以避免使用现代操作系统在C中释放已分配的内存吗?

我正在使用Visual C ++ 2010进行C项目。 我在main()中有以下代码:

ARRAY2D a; arr2_init(&a, 5, 5); /* 5x5 dynamic, multi-demensional array (of type int) */ arr2_release(&a); 

我不确定我是否需要最后一行。 在现代操作系统的程序结束时,我可以省略arr2_release()吗? 我正在使用Windows 7。

是的,您可以避免手动释放任何资源,运行时或操作系统将在您之后清除。
不过,请不要这样做。

它是一种有效的优化,可以更快地关闭(有时甚至可以更快地执行以换取内存消耗),尽管您必须挑剔自己留下的资源:

  • 操作系统可以有效地处理内存和文件描述符(没有这样做的古老平台大部分都会被废弃。但是,有一些小系统无法解决这个问题)。
  • 运行时可以有效地清除FILE缓冲区。
  • Windows GUI资源无法以这种方式有效清理,需要更长时间。

无论如何,做清理并开发正确的思维模式,它使搜索泄漏变得更加容易,并且可以更好地转移到更大和更长时间运行的任务。
过早优化是万恶之源。 (仅在测量和仔细考虑后优化的专家选项尚不适用)

永远释放你的记忆。 操作系统将在终止时释放进程的资源,包括其内存。 但这并没有给你垃圾收集(你必须使用不同的语言)。 另请注意,它只程序结束后才会这样做(也在注释中说明),因此只要程序运行,如果不这样做,内存将不会被释放。

你的代码有一天可能被用作更大程序的一部分,即使它现在只有几行。 因此,请始终确保释放您获得的所有资源。 此外,作为C程序员,无论如何,考虑资源管理应该是一种习惯。