在声明大型数组时获取堆栈溢出异常

在声明大型数组时获取堆栈溢出异常

下面的代码正在为我生成堆栈溢出错误

int main(int argc, char* argv[]){
    int sieve[2000000];
    return 0;}

我怎么才能避开这一切?我正在使用TurboC+,但我想将我的代码保存在C中

编辑:

谢谢你的建议。上面的代码只是-例如,我实际上在一个函数中声明了数组,而不是在Submain中。另外,我需要将数组初始化为零,所以当我在google上搜索malloc时,我发现calloc对于我的目的来说是完美的。

Malloc/calloc也比在堆栈上分配的优点是允许我使用变量声明大小。


慕莱坞森
浏览 775回答 3
3回答

慕尼黑8549860

数组太大,无法容纳堆栈,请考虑使用堆:int *sieve = malloc(2000000 * sizeof(*sieve));如果您真的想更改堆栈大小,看看这份文件。针尖-不要忘记在不再需要时释放动态分配的内存。

慕运维8079593

最好将其分配到堆上,而不是堆栈上。有点像int main(int argc, char* argv[]){     int * sieve;     sieve = malloc(20000);     return 0;}
打开App,查看更多内容
随时随地看视频慕课网APP