今天在網上看到如題的一個帖子,覺得值得收藏一下
實現方法:
1. 放在全局區
static int c[1000 * 1000];
2. 動態分配.
int *c;
c = malloc(sizeof(int) * 1000 * 1000);
#include<stdio.h>
#include<stdlib.h>
int main()
{
int *p = (int *)malloc(1000000*sizeof(int));
if(p) {
printf("success!/n");
}
else {
printf("failed!/n");
}
free(p);
return 0;
}
知識鏈接:堆和棧的區別
堆:
靜態變量和全局變量一般存放在堆中,malloc函數申請的空間也是存放在堆中
棧:
子函數入口的臨時變量和局部變量,這一類主要存放在棧中
1) 在棧上創建。在執行函數時,函數內局部變量的存儲單元都在棧上創建,函數執行結束時這些存儲單元自動被釋放。棧內存分配運算內置於處理器的指令集中,一般使用寄存器來存取,效率很高,但是分配的內存容量有限。
2) 從堆上分配,亦稱動態內存分配。程序在運行的時候用malloc或new申請任意多少的內存,程序員自己負責在何時用free或delete來釋放內存。動態內存的生存期由程序員自己決定,使用非常靈活。
3) 從靜態存儲區域分配。內存在程序編譯的時候就已經分配好,這塊內存在程序的整個運行期間都存在。例如全局變量,static變量。
4) 文字常量分配在文字常量區,程序結束後由系統釋放。
5)程序代碼區。