我想在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++中聲明不同大小的數組數組?
- 2. 如何聲明2d矩陣數組PHP
- 3. 在C++中聲明大字符數組
- 4. 聲明2d字符數組?
- 5. 如何在C/C++中比較兩個2d char字符數組
- 6. 聲明char數組中的Ruby FFI
- 7. 如何在C++中聲明一個數組的固定大小
- 8. 如何使用3D char數組調整雙指針2D char數組的大小?
- 9. C:如何將2d char數組存儲在結構中?
- 10. 如何在聲明中初始化char數組
- 11. Objective-C++錯誤中的2D數組聲明
- 12. 如何在Objective-C中聲明數組內的數組?
- 13. 有條件地在二維char數組中聲明數組?
- 14. 我如何聲明一個二維數組,並用C++聲明它的大小?
- 15. 在Visual C++中將1D指針數組(char)轉換爲2D指針數組(char)。
- 16. 將size_t轉換爲int來聲明char數組的大小
- 17. 如何使用2d數組來聲明C++中的array_view或array對象AMP
- 18. 在聲明時以C編程語言初始化2D數組
- 19. 在Visual Basic中聲明數組大小
- 20. 在C++中,2D數組的增量是什麼?函數聲明(0)做什麼?
- 21. c#數組聲明語法vs C++數組聲明語法
- 22. C聲明使用常量的2d數組
- 23. C++到C#數組聲明
- 24. 在C++中聲明數組大小的最佳方法
- 25. 將shellcode聲明爲char []數組和char *之間的區別
- 26. 數組大小聲明
- 27. 聲明char [] [512]?
- 28. 如何在C++類中聲明動態大小的數組字段?
- 29. extern在C中聲明二維數組?
- 30. 不能在c中聲明雙數組#
閱讀關於'動態內存分配'。 –
[檢查此鏈接](http://www.geeksforgeeks.org/dynamically-allocate-2d-array-c/) – 0xtvarun
您可以1.使用動態內存分配或2.將數組聲明爲全局數組。這樣大的內存不太可能在堆棧上工作。 –