以下代码为我生成堆栈溢出错误
int main(int argc, char* argv[])
{
int sieve[2000000];
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?我正在使用Turbo C++,但我想将我的代码保存在C中
编辑:
感谢您的建议.上面的代码只是例如,我实际上在函数中声明了数组而不是在sub main中.此外,我需要将数组初始化为零,所以当我使用Google搜索时,我发现calloc非常适合我的目的.
Malloc/calloc还具有优于堆栈分配的优势,允许我使用变量声明大小.
我一直对此感到好奇 - 为什么在C++中我必须从mallocC而不是在C中转换返回值?
以下是C++中的示例:
int *int_ptr = (int *)malloc(sizeof(int*));
Run Code Online (Sandbox Code Playgroud)
以下是C++中不起作用的示例(无转换):
int *int_ptr = malloc(sizeof(int*));
Run Code Online (Sandbox Code Playgroud)
我听说在C中,事实上,输出输出malloc()是一个错误.
任何人都可以评论这个话题吗?