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