---
title: 编译极复杂表达式导致栈耗尽
description: "如下例，表达式中有10000个变量连续相加："
url: https://www.hikunpeng.com/document/detail/zh/kunpengdevkithistory/bisheng/hist-bisheng/kunpengbisheng_06_0024_0.html
sourcePath: /source/zh/kunpengdevkithistory/bisheng/hist-bisheng/kunpengbisheng_06_0024_0.html
indexId: 1635cc368a4fec7b4994b6cf57262294c195a59b07e49c4b511ad874bfecd74582
---
# 编译极复杂表达式导致栈耗尽

如下例，表达式中有10000个变量连续相加：

```
Sum += g0 + g1 + g2 + … + g9998 + g9999;   // 10000个变量连续相加
```

在主机系统默认栈大小有限的情况下，可能会出现segmentation fault错误，原因是该表达式极其复杂，编译时引起Clang进程使用的栈大小超过系统限制。

在较高的优化等级下，一部分循环会被展开，也会导致生成极复杂的表达式。

#### 规避方案

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

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

图1 系统信息
