2015-04-30 30 views
-1

这个函数是什么错误,这是预计将一个行和一列添加到给定的二维数组?矩阵是对称的。函数修改二维数组添加行使用realloc一列

void updateMatrix(double ***mat, int size, double *vec) 
{ // mat is sizeXsize matrix, length of vec is size+1 
    *mat = (double**)realloc(*mat, (size + 1)*sizeof(double*)); 
    (*mat)[size] = (double*)malloc((size + 1)*sizeof(double)); 

    for(int i = 0; i < size + 1; i++) { 
     (*mat)[size][i] = vec[i]; 
    } 

    for(int i = 0; i < size; i++) { 
     (*mat)[i] = (double*)realloc((*mat)[i], (size + 1)*sizeof(double)); 
     (*mat)[i][size] = vec[i]; 
    } 
} 
+1

很难说,你遇到了什么问题?你有构建错误吗?运行时错误或崩溃?意外的结果?还有别的吗? –

+2

另外,不要重新分配你自己重新分配的指针,想想如果'realloc'失败并返回'NULL'会发生什么。 –

+0

分段错误 –

回答

0

你的realloc在第二个for循环返回NULL .. 我试图找出原因。

您是否事先分配了所有东西?因为你可能会传递一个非NULL和非mableced指针给realloc。这是被禁止/将导致错误

或者,如@MichaelDorgan所说,你可能会传递一个巨大的大小到你的函数,但我sincerereley希望你没有试图分配一个数组。否则,我很好奇它的使用。

+0

或者他可能会传递一个巨大的尺寸。如果/处理代码周围的代码,可以肯定地回答他的一些问题。 –