---
title: 嵌套循环展开次数过多导致栈溢出
description: "嵌套循环如下例："
url: https://www.hikunpeng.com/document/detail/zh/kunpengdevkithistory/bisheng/hist-bisheng/kunpengbisheng_06_0025_1.html
sourcePath: /source/zh/kunpengdevkithistory/bisheng/hist-bisheng/kunpengbisheng_06_0025_1.html
indexId: 348f1aeb649f4f71e0cb52da6fc5d8d126bc5bd4a7d04e2940e11d7d5311f53982
---
# 嵌套循环展开次数过多导致栈溢出

嵌套循环如下例：

```
for (c = 0; c <= 36; c++) {
    a = 5;
    for (; a <= 42; a++)
        i = (h *= b *= 3) ? b |= 4 : (i %= 5) & 0;
}
```

在主机系统默认栈大小有限的情况下，可能会出现segmentation fault错误。

原因是由于循环展开会将内外层循环都全展开，导致形式过于复杂，在分析阶段会导致栈溢出。

#### 规避方案

通过ulimit -s将栈空间设大，如ulimit -s 20000（栈大小上限设为20000K），或ulimit -s unlimited（栈大小不受限），可规避该问题。

ulimit -a命令可以查看系统默认栈大小限制。
