---
title: 嵌套循环展开次数过多导致栈溢出
description: "嵌套循环如下例："
url: https://www.hikunpeng.com/document/detail/zh/kunpengdevps/compilation/ug-bisheng/kunpengbisheng_06_0025.html
sourcePath: /source/zh/kunpengdevps/compilation/ug-bisheng/kunpengbisheng_06_0025.html
indexId: 7e6e8e8a969524f1b0e842b582daa9cd41cce8dcc5d622d4bfe293048bec0db174
---
# 嵌套循环展开次数过多导致栈溢出

嵌套循环如下例：

```
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命令可以查看系统默认栈大小限制。
