我必须在函数中进行动态分配(双指针),然后我必须在矩阵中放入一些数字,然后对其进行重新分配]]
我也尝试在第一个函数中写**矩阵而不是*(matrice [i]),因为我必须在第一个动态分配之后创建一个矩阵,但是它总是错误的,在这种情况下,程序会在i之后退出插入矩阵的第一行
#include <iostream> #include <stdlib.h> using namespace std; void allocaMatrice(int *** matrice,int * r,int * c); void leggiMatrice(int ** matrice,int r,int c); void scriviMatrice(int ** matrice,int r,int c); void deallocaMatrice(int ** matrice,int r); int main (){ int **matrice; int r, c; allocaMatrice(&matrice,&r,&c); leggiMatrice(matrice,r,c); scriviMatrice(matrice,r,c); deallocaMatrice(matrice,r); cin.get(); return 0; } void allocaMatrice(int *** matrice,int * r,int * c){ cout<<"Dimmi il numero di righe della matrice"<<endl; cin>>*r; while(cin.get()!='\n'); cout<<"Dimmi il numero di colonne della matrice"<<endl; cin>>*c; while(cin.get()!='\n'); *matrice=(int **) calloc (*r,sizeof(int)); for(int i=0;i<*c;i++){ *matrice[i]=(int *) malloc ((*c)*sizeof(int)); } } void leggiMatrice(int ** matrice,int r,int c){ for(int i=0;i<r;i++){ for(int j=0;j<c;j++){ cout<<"Dimmi l'elemeno alla riga e colonna corrente"<<endl; cin>>matrice[i][j]; while(cin.get()!='\n'); } } } void scriviMatrice(int ** matrice,int r,int c){ for(int i=0;i<r;i++){ for(int j=0;j<c;j++){ cout<<matrice[i][j]<<"\t"; } cout<<endl;; } } void deallocaMatrice(int ** matrice,int r){ int i; for(i=0;i<r;i++){ free((*matrice)+1); } free(matrice); }
调试错误是“程序接收到的信号SIGSEGV,分段错误”
我必须在函数中进行动态分配(双指针),然后我必须在矩阵中放入一些数字,然后对其进行释放,我还尝试写**矩阵而不是*(matrice [i] )...
行