如果我需要编写以下代码:
int a[10000000];
我知道由于堆栈溢出,代码有时可能会失败。问题是如何在运行时处理这些错误,并避免段错误?
如果我需要编写以下代码:
int a[10000000];
我知道由于堆栈溢出,代码有时可能会失败。问题是如何在运行时处理这些错误,并避免段错误?
std::vector a(10000000);
在运行时无法处理这个问题。在C语言中,使用自动存储期对象的唯一明智、安全的方法是保持它们足够小,以便您可以确信它们永远不会超出您知道的堆栈量(例如,从不使用超过您预期拥有的堆栈量的10%左右)。