C ++矩阵行列式/内存分配

时间:2015-08-26 11:25:52

标签: c++ memory-management matrix determinants

我正在尝试用C ++编写矩阵行列式函数。但是我的代码没有编译,也不知道为什么(我使用的是在线c ++compîler,错误消息iget是“ *错误的`/ var / www / service / usercode / 519646917 / a。 out':free():下一个大小无效(快):0x00000000019c1180 * “)。似乎问题来自Free函数。

任何人都可以告诉我我的代码有什么问题吗?

提前致谢 问候

.gitlabci.yml

2 个答案:

答案 0 :(得分:0)

你有太多错误:

a[i]=new double;应为a[i]=new double[N];double** A=new double*[n-1];应为double** A=new double*[n];或以下循环应为n-1。 A[j]=new double[n-1];应为A[j]=new double[n];或以下循环应为n-1。 这里A[j-1][g]=a[j][k]; g++; g超出了数组的范围。你也没有释放a数组。我想从头开始重写代码会更容易,这次考虑一下你在做什么。

答案 1 :(得分:0)

我相信你唯一的错误(除了数组的尺寸' a'在main中)与你定义g的地方有关。 g应该在这里定义:

 for (unsigned int j=1 ; j<n ; j++)
 {
      unsigned int g= 0;
      for (unsigned int k=0 ; k<n ; k++)
      {
          if (k!=i)
          {
              A[j-1][g]=a[j][k]; g++;
          }
      }
  }

关于其他n-1件事,我理解你对他们的意思,我认为他们是正确的