我正在使用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.
答案 0 :(得分:1)
是的,您可以避免手动释放任何资源,运行时或操作系统将在您之后清除 请不要这样做。
这是一种有效的优化,可以更快地关闭(有时甚至可以更快地执行以换取内存消耗),尽管你必须挑剔你留下的资源:
FILE
缓冲区由运行时有效清理。无论如何,进行清理并开发正确的思维模式,使搜索泄漏变得更加容易,并且可以更好地转移到更大,更长时间运行的任务。 过早优化是万恶之源。 (仅在测量和仔细考虑后优化的专家选项尚不适用)
答案 1 :(得分:0)
永远释放你的记忆。操作系统将发布一个过程'资源终止时,包括其内存。但这并没有给你垃圾收集(你必须使用不同的语言)。另请注意,只有 您的程序结束后(也在评论中说明),所以只要您的程序正在运行,如果您不这样做,内存将不会被释放它
有一天你的代码可能会被用作更大程序的一部分,即使它现在只有几行。因此,请始终确保释放您获得的所有资源。此外,作为C程序员,无论如何,考虑资源管理应该是一种习惯。