【发布时间】:2023-01-17 21:45:54
【问题描述】:
以下代码为我生成堆栈溢出错误
int main(int argc, char* argv[])
{
int sieve[2000000];
return 0;
}
我该如何解决这个问题?我正在使用 Turbo C++,但想将我的代码保留在 C 中
编辑:
谢谢你的建议。上面的代码只是举例,我实际上是在一个函数中而不是在 sub main 中声明数组。另外,我需要将数组初始化为零,所以当我用 google 搜索 malloc 时,我发现 calloc 非常适合我的目的。
Malloc/calloc 也比在堆栈上分配有优势,允许我使用变量声明大小。
【问题讨论】:
-
我读到“stack overflow exception”并心想“......?网站有问题吗?”显然我在这里花了太多时间 :-/
-
我很确定这种类型的问题以前一定在这个网站上出现过,但是搜索“堆栈溢出”是没有用的
-
我认为每个 C 程序员最终都会在第一次解决这个问题时浪费大量时间。
-
Turbo C++ 是一个 16 位应用程序,这意味着它使用内存分段,每个段的大小为 64KB,因此任何结构都不能大于此数字,总内存使用量最大为 640KB(某些扩展内存管理器为 1MB 或更多) ).为什么要用这么一个20多岁的编译器?
-
到目前为止,希望您已经发现了 GCC。在其他地方它捆绑了Code::Blocks集成开发环境。
标签: c arrays memory stack allocation