3

intサイズ20MBのアレイを作成するにはどうすればよいですか?

mallocまたはsbrk何か他のものを使用する必要がありますか?

4

3 に答える 3

6

malloc20MBのようなものが必要な場合は、通常は良い考えです。ほとんどのスタックは小さく、実行しようとするとプログラムがクラッシュします。

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 */

しかし、manページに「使用を避ける」と書かれているように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 に答える