需要一個1000000的數組實現方法

今天在網上看到如題的一個帖子,覺得值得收藏一下

實現方法:

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) 從堆上分配,亦稱動態內存分配。程序在運行的時候用mallocnew申請任意多少的內存,程序員自己負責在何時用freedelete來釋放內存。動態內存的生存期由程序員自己決定,使用非常靈活。 

3) 從靜態存儲區域分配。內存在程序編譯的時候就已經分配好,這塊內存在程序的整個運行期間都存在。例如全局變量,static變量。 

4) 文字常量分配在文字常量區,程序結束後由系統釋放。 

5)程序代碼區。 

發佈了15 篇原創文章 · 獲贊 14 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章