【发布时间】:2011-11-01 22:13:51
【问题描述】:
我正在编写 C 代码,其中我正在分析一些数据。我已将程序设置为仅处理 100 个数据输入。当它有超过 100 个输入时,它给出了分段错误。我想创建一种方法,以便当输入数量超过 100 时,将警告用户并且程序将终止。我知道如何通过简单的return 0 从主函数中执行此操作,但是我在主函数之外调用了多个函数,而且很难做到这一点,即使此函数中的return 0 也会使其保持循环。
有没有什么方法可以直接终止整个程序而不进入主程序?
【问题讨论】:
-
您可以使用
<stdlib.h>中的exit(int),但我想您可能想了解一下为什么您的程序不能处理超过100 个数据点。除非这是设计使然,或者您不希望他们这样做。 -
birryree 是正确的。虽然可能突然从程序中的任何地方退出,但这是非常糟糕的做法(尤其是如果您没有清理指针和其他对象中的内存)。您最好优雅地处理他们有超过 100 个数据输入的情况,并在全部清理后退出并显示错误代码。
-
那个
exit标签现在看起来很有伏笔…… -
@TheCapn 你知道退出程序后,所有内存(堆和堆栈)都会自动清理吗?自 Windows 98 以来,我还没有看到真正持久的内存泄漏。
-
如果您的程序失败,您不应从 main 返回 0。如果你返回零,你就是在告诉操作系统你成功了。失败时最好返回EXIT_FAILURE,程序成功时才返回EXIT_SUCCESS(0)。