我想在C中声明一个大的2D(50,000 x 50,000)char数组。我们可以这样做吗?如果是的话,怎么样?如何在C中声明大的2D char数组?
回答
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]
。
[请考虑在C]中忽略'malloc()'的返回值的转换(http://stackoverflow.com/questions/605845/do-i-cast-the-result-of -malloc)。此外,这样做500001堆分配,这几乎不是最佳的或非常好的。它可以被简单地简化为2,并且只需一点点工作就可以完成一次分配。 – unwind
至少它足够大,幅度很大:'sizeof int'要精确。 OP要求只提供一个'char'数组。 – usr2564301
当问题关于'char'时,为什么要制作'int'数组? –
- 1. C-声明char数组
- 2. 如何声明已在类中声明的char变量的char数组?
- 3. 如何在C++中声明不同大小的数组数组?
- 4. 如何在C#中声明2D整型数组?
- 5. “bad expression”声明char数组c
- 6. 在C++中声明大字符数组
- 7. 如何声明2d矩阵数组PHP
- 8. C - 在一个2d char *数组中存储多个char数组
- 9. 2D char数组的全局和局部声明
- 10. 声明2d字符数组?
- 11. 如何在C/C++中比较两个2d char字符数组
- 12. 如何在C++中声明一个数组的固定大小
- 13. 如何在C中声明一个可变大小的数组?
- 14. 声明char数组中的Ruby FFI
- 15. 声明在C++ 2D阵列
- 16. 如何查找C中动态2D char数组中的行数?
- 17. 如何在Qt中声明和使用2D整数数组(GUI)?
- 18. 如何在java中声明一个2d数组的调用?
- 19. 如何使用3D char数组调整双指针2D char数组的大小?
- 20. C:如何将2d char数组存储在结构中?
- 21. 在声明时初始化char数组?
- 22. 如何在声明中初始化char数组
- 23. Java 2d char数组
- 24. Objective-C++错误中的2D数组声明
- 25. 如何在Objective-C中声明数组内的数组?
- 26. 如何在C中声明足够大小的缓冲区?
- 27. 如何将2d char数组转换为2d int数组?
- 28. 有条件地在二维char数组中声明数组?
- 29. 在Visual C++中将1D指针数组(char)转换为2D指针数组(char)。
- 30. 如何使用2d数组来声明C++中的array_view或array对象AMP
阅读关于'动态内存分配'。 –
[检查此链接](http://www.geeksforgeeks.org/dynamically-allocate-2d-array-c/) – 0xtvarun
您可以1.使用动态内存分配或2.将数组声明为全局数组。这样大的内存不太可能在堆栈上工作。 –