正确的软件编写c

时间:2015-01-12 08:45:34

标签: c malloc exit

我使用内存分配并假设分配失败。 在退出之前,我是否必须释放程序中的所有内存? 这真的有必要吗? 可以退出()就够了吗?

如果我确实需要释放程序中的所有内存,假设我有大量的程序,其中包含大量信息。我怎么能设法做到这一点?

3 个答案:

答案 0 :(得分:0)

在大多数操作系统中,进程拥有的所有内存在退出该进程时都会被释放。

答案 1 :(得分:0)

  

在退出之前,是否必须释放程序中的所有内存?是   这真的有必要吗?退出()是否足够?

只需要free()成功分配的内存。

free()获取malloc() realloc()calloc()返回的指针,因此如果这是NULL,则需要将此指针传递给free(),然后不执行任何操作将由free()完成,因此无需担心分配失败。

exit()就足够了,因为当您退出时,所有已分配的内存在许多操作系统中都会自动释放。

答案 2 :(得分:0)

嗯,这取决于。

如果您想在某些分配失败后继续,在结束时[或者不再使用内存分配之后,以较早者为准],您可以免费()成功分配的内存。

OTOH,如果您正在接受硬件,在分配失败后立即将应用程序退出,那么您可以避免免费使用一部分。