为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C C++
慕莱坞森 2019-06-05 15:19:20
在声明大型数组时获取堆栈溢出异常下面的代码正在为我生成堆栈溢出错误int main(int argc, char* argv[]){     int sieve[2000000];     return 0;}我怎么才能避开这一切?我正在使用TurboC+,但我想将我的代码保存在C中编辑:谢谢你的建议。上面的代码只是-例如,我实际上在一个函数中声明了数组,而不是在Submain中。另外,我需要将数组初始化为零,所以当我在google上搜索malloc时,我发现calloc对于我的目的来说是完美的。Malloc/calloc也比在堆栈上分配的优点是允许我使用变量声明大小。
查看完整描述

3 回答

?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

数组太大,无法容纳堆栈,请考虑使用堆:

int *sieve = malloc(2000000 * sizeof(*sieve));

如果您真的想更改堆栈大小,看看这份文件。

针尖-不要忘记在不再需要时释放动态分配的内存。


查看完整回答
反对 回复 2019-06-05
?
慕运维8079593

TA贡献1876条经验 获得超5个赞

最好将其分配到堆上,而不是堆栈上。有点像

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


查看完整回答
反对 回复 2019-06-05
  • 3 回答
  • 0 关注
  • 774 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信