2017-01-10 51 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'数组? –

相关问题