3

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

我必须使用malloc还是sbrk其他什么?

4

3 回答 3

6

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

于 2012-12-11T01:33:00.853 回答
1

我认为你最好的选择是使用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;
}
于 2012-12-11T01:33:17.550 回答
0

你可以试试这段代码

 int *num; 
    num = (int *) malloc (BUFSZ* sizeof(int))

在这里你可以定义BUFSZ可以是你想要的任何尺寸

于 2012-12-11T01:33:24.517 回答