我正在尝试用C ++编写矩阵行列式函数。但是我的代码没有编译,也不知道为什么(我使用的是在线c ++compîler,错误消息iget是“ *错误的`/ var / www / service / usercode / 519646917 / a。 out':free():下一个大小无效(快):0x00000000019c1180 * “)。似乎问题来自Free函数。
任何人都可以告诉我我的代码有什么问题吗?
提前致谢 问候
.gitlabci.yml
答案 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件事,我理解你对他们的意思,我认为他们是正确的