我试图在C中定义一个大的动态大小的2D数组。当数组大小不是很大(例如20,000 x 20,000)时,内存分配工作得很好。但是,当数组大小大于50K x 50K时,内存分配失败。这是示例代码。
long int i = 0;
int **Cf = calloc(30000, sizeof *Cf);
for( i = 0; i < 30000; i++){
Cf[i] = calloc(30000, sizeof *(Cf[i]));}
What is the maximum size of buffers memcpy/memset etc. can handle?帖子已解释了此问题发生的原因。但是,它并没有说明在程序中需要大型动态2D数组时该怎么做。我确信应该有一种有效的方法,因为许多科学应用需要这个功能。有什么建议吗?