我正在尝试为2D矩阵分配内存,但出现了分段错误。
int** inicializarMatriz(int **matriz, int vertices){
int i;
matriz=(int**) calloc(vertices,sizeof(**matriz));
for(i=0;i<vertices;i++){
matriz[i]=(int*) calloc(vertices,sizeof(matriz[i]));
memset(matriz[i],-1,vertices*sizeof(matriz[i]));
}
return (int **)matriz;}
我该如何解决?
最佳答案
我认为您对第一个分配内存有问题。
matriz=(int**) calloc(vertices,sizeof(**matriz));
它应该是
matriz=(int**) calloc(vertices,sizeof(*matriz));
因为您要创建*(matriz + i)格式的顶点子数组。因此正确的大小是sizeof(* matrix)。
还有一点,这取决于您在main函数中的pass参数。假设您声明了2个指针:int * array&int ** array。当您在函数中传递它们时,它将返回不同的结果。
关于c - memset函数分割错误的问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59402782/