c - 数组大小为 2000 及以上

标签 c arrays size

我正在编写有限差分方案的代码来近似偏微分方程解。为此,我需要在细化网格时创建一个更大尺寸的双数组。问题是当我遍历大小为 1000 的双数组时,我得到了 Segmentation failure: 11。我创建了这个简单的代码来识别我的问题。请让我知道如何解决这个问题

#include<stdio.h>
#include<stdlib.h>
#include<math.h>

int main()
{
    int n, a=2000,i=0;
    double T=40;
    double time =25, k = T/(a-1);
    double Array[a][a];
    time=25;
    n=(time/k);
    for(i=0;i<a;i++)
    {
        Array[i][i]= 2+i;
    }
    printf("%d\n", n);
    printf("%lf\n", Array[600][600]);

}

请注意,a =1000 或更少就可以了。而且我的伙伴正在使用 fortran,没有遇到同样的问题。

谢谢

最佳答案

你可以使用类似的东西:

  #include <malloc.h>
  ...
  double** Array=malloc(m*sizeof(double*));
  if(Array==NULL){printf("malloc failed\n");}
  Array[0]=malloc(m*n*sizeof(double));
  if(Array[0]==NULL){printf("malloc failed\n");}
  for (i=0;i<m;i++){
      Array[i]=&Array[0][i*n];
  }
  ...
  Array[j][i]=i+j;
  ...
  free(Array[0]);
  free(Array);

malloc 用于分配内存,free 用于释放内存。

再见,

关于c - 数组大小为 2000 及以上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23395437/

相关文章:

c++ - 哪些提升类型用于 switch-case 表达式比较?

c qsort 似乎删除了数组中的最后一个值

c - 为什么结构填充没有正常发生?

c++ - 当它不在 cpu 寄存器中时,是否可以将具有两个高阶零字节的指针存储为 WORD?

c++ - 将字符串的长度分配给整数 : C++

c - if 语句不起作用立即结束程序

arrays - 如何使用PL/JSON解析数组数据

javascript - 推送值后未定义的数组

css - Safari 4 的背景大小解决方法

Javascript 在对象数组中找到最接近的数字并检索对象的键值