2017-01-10 62 views
-2

我想在C中聲明一個大的2D(50,000 x 50,000)char數組。我們可以這樣做嗎?如果是的話,怎麼樣?如何在C中聲明大的2D char數組?

+1

閱讀關於'動態內存分配'。 –

+0

[檢查此鏈接](http://www.geeksforgeeks.org/dynamically-allocate-2d-array-c/) – 0xtvarun

+0

您可以1.使用動態內存分配或2.將數組聲明爲全局數組。這樣大的內存不太可能在堆棧上工作。 –

回答

0
int **array; 
int i; 

array = (int**)malloc(sizeof(int*) * 50000)// <stdlib.h> for malloc 

for (i = 0; i < 50000; i++) 
    array[i] = (int*)malloc(sizeof(int) * 50000); 

然後,您可以訪問元素爲array[i][j]

+6

[請考慮在C]中忽略'malloc()'的返回值的轉換(http://stackoverflow.com/questions/605845/do-i-cast-the-result-of -malloc)。此外,這樣做500001堆分配,這幾乎不是最佳的或非常好的。它可以被簡單地簡化爲2,並且只需一點​​點工作就可以完成一次分配。 – unwind

+1

至少它足夠大,幅度很大:'sizeof int'要精確。 OP要求只提供一個'char'數組。 – usr2564301

+1

當問題關於'char'時,爲什麼要製作'int'數組? –