사용자 입력에서 매트릭스 크기 (dim
)를 읽고 동적으로 n*n
행렬을 만들려고합니다. 그러나 매트릭스를 인쇄 할 때 프로그램이 충돌합니다.무료 매트릭스의 동적 매트릭스 문제
Stackoverflow에서 검색 한 결과 free()
오류 일 수 있습니다. 왜 그런지 모르지만 프로그램은 dim < 5
일 때 작동합니다.
#include <stdio.h>
#include <stdlib.h>
typedef struct{
float real, img;
}COMPLEXO;
void zeroIt(COMPLEXO **matrix, int dim){
int i,j;
for(i=0;i<dim;i++){
for(j=0;j<dim;j++){
matrix[i][j].real=0;
matrix[i][j].img=0;
}
}
}
int main(void){
int dim, i, j;
COMPLEXO **matrix;
int flag = 1;
/*Pedir Dimensao da Matrix*/
printf("DIM: \n");
scanf("%d", &dim);
/*Alocar espaço*/
matrix = (COMPLEXO **) malloc(sizeof(dim) * sizeof(COMPLEXO));
/*Alocar linhas*/
for(i = 0; i < dim; i++){
matrix[i] = (COMPLEXO *) malloc(sizeof(dim) * sizeof(COMPLEXO));
}
if(matrix == NULL){
printf("Erro");
return;
}
/* Escrever dados */
for(i=0;i<dim;i++){
for(j=0;j<dim;j++){
matrix[i][j].real = i;
matrix[i][j].img = j;
}
}
printf("#insert matrix - done\n\n");
/* Imprimir dados */
for(i=0;i<dim;i++){
for(j=0;j<dim;j++){
printf("%.f|%.f ", matrix[i][j].real, matrix[i][j].img);
}
printf("\n");
}
printf("#print matrix - done \n\n");
zeroIt(matrix, dim);
for(i=0;i<dim;i++){
free(matrix[i]);
}
free(matrix);
printf("#free pointer - done \n\n");
getchar();
return 0;
}
, 작업을 해달라고. – urb
네, 이제 생각해 봅시다. 구조는 포인터의 크기 이상이어야합니다. 따라서 중요하지 않아야합니다. 프로그램이 정확히 어디에서 사망합니까? – happydave