malloc如果你想要20MB这样的东西通常是一个好主意.大多数堆栈都较小,如果你尝试,会使程序崩溃.
int *myInts = (int *)malloc(20*1024*1024);
Run Code Online (Sandbox Code Playgroud)
或将其作为静态/全局变量:
int myArray[20*1024*1024/sizeof(int)];
Run Code Online (Sandbox Code Playgroud)
或者 sbrk
int *myInt = sbrk(0); /* Get the current pointer */
sbrk(20*1024*1024); /* Now increase it */
Run Code Online (Sandbox Code Playgroud)
但正如手册页中所说"避免使用sbrk".您应该使用的唯一时间sbrk是您实现自己的内存分配器.