如何创建int
大小为 20 MB 的数组?
我必须使用malloc
还是sbrk
其他什么?
malloc
如果您想要 20MB 之类的东西,通常是个好主意。大多数堆栈都较小,如果您尝试会导致程序崩溃。
int *myInts = (int *)malloc(20*1024*1024);
或将其放置为静态/全局变量:
int myArray[20*1024*1024/sizeof(int)];
或与sbrk
int *myInt = sbrk(0); /* Get the current pointer */
sbrk(20*1024*1024); /* Now increase it */
但正如手册页所说“避免使用sbrk
”。您应该使用的唯一时间sbrk
是您正在实现自己的内存分配器。
我认为你最好的选择是使用malloc
,例如:
#include stdio.h
#include malloc.h
int main() {
int array_size = 0;
int* my_array = (int*)malloc(array_size);
free((void*)my_array);
return 0;
}
你可以试试这段代码
int *num;
num = (int *) malloc (BUFSZ* sizeof(int))
在这里你可以定义BUFSZ
可以是你想要的任何尺寸