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

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

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

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

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

#### 规避方案

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

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

图1 系统信息
