int
サイズ20MBのアレイを作成するにはどうすればよいですか?
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 */
しかし、manページに「使用を避ける」と書かれているように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
望むどんなサイズでもあり得ることを見つけることができます