如何在C中设置20 mbs的数组大小

Nab*_*ter 3 c

如何创建int大小为20 MB 的数组?

我一定要使用malloc或者sbrk还是其他什么东西?

Gil*_*lle 6

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是您实现自己的内存分配器.