1. 程式人生 > >C中如何定義長度為1000000的整型陣列

C中如何定義長度為1000000的整型陣列

int n[1000000];這樣肯定是不行的,因為這樣定義的陣列用的是棧記憶體,系統預設值為最大1Mb,一個int型佔4位元組這樣最大可以申請1024*1024/4=264144個,如果考慮到系統自身的佔用最大值約為25000個。int *p=(int )malloc(1000000sizeof(int));,這樣用的是堆記憶體,只要你記憶體有那麼多的連續空間就可以;例子如下:

#include<stdio.h>
#include<malloc.h>

int main()
{
	int *p=(int *)malloc(1000000*sizeof(int));
	//int p[1000000];
	int i=0;
	for(;i<1000000;i++)
		printf("%d\n",p[i]=i);
                free(p);
	return 0;
}

通常用兩個辦法解決這個問題:
1.宣告一個全域性陣列。就是在所有函式之外宣告,如int a[1000000];就可以了。
2.在需要的函式中用malloc函式動態申請記憶體,如int *pt=(int *)malloc(sizeof(int)*1000000);就可以了。用完後要用free(pt);釋放所申請的記憶體空間。