38.7 심사문제 질문있습니다
, 송 관호님이 작성#include <stdio.h>
#include <stdlib.h>
int main (){
int col;
scanf("%d",&col);
int **m=malloc(sizeof(int)*col);
for(int i=0;i<col;i++){
m[i]=malloc(sizeof(int)*col);
for(int j=0;j<col;j++){
if(i==j){
m[i][j]=1;
}
else
m[i][j]=0;
}
}
for(int i=0;i<col;i++){
for(int j=0;j<col;j++){
printf("%d ",m[i][j]);
}
printf("\n");
}
for (int i=0;i<col;i++){
free(m[i]);
}
free(m);
return 0;
}
이렇게 했을때 m[0][0]자리에 1이 아닌 무작위의 오류된 숫자가 나옵니다 왜그런가요>
Re: 38.7 심사문제 질문있습니다
, 도장_ 관리자님이 작성코드 디버깅은 제공하지 않습니다.
UNIT 6을 학습해서 디버거로 단계별로 실행해보세요. 의심가는 위치에 중단점을 설정해서 실행해보세요. 또한, F11로 한 단계씩 실행해보는 것도 좋습니다.
malloc으로 메모리를 할당했으면 memset으로 초기화하는 습관을 들이세요.
memset으로 초기화하지 않으면 쓰레기 값이 들어간 상태로 이용하게 됩니다.