나는 두 가지처음에는 쓰레기 값이 인쇄되는 이유는 무엇입니까?
는, 0 ~ 10 사이의 숫자를 (값이 10 미만이어야하므로 (10)는 포함되지 않음) 얻을 구분 및 배열
에 저장 할 것이다 프로그램을 쓰고 있어요인쇄이를 위해 각 번호
배열은 I 정확하게 변수로 표시라고 현재 정수 값의 크기에 따라 배열마다 초기화 것이다 IF-다른 블록 쓴 num
하나의 숫자의 배열을 만들면 하나의 요소의 배열을 만들지 만 숫자가 두 자리 길이이면 두 요소 등의 배열이 만들어집니다.하지만 코드를 실행할 때마다 처음에는 쓰레기 값이 인쇄됩니다.
그 이유는 무엇이며이 문제를 해결하는 방법은 무엇일까요?
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int mirror(int *arr,int num,int i);
int main(){
int num = 0;
int range = 1;
int *arr;
while(num<10){
int i=0;
if(num<(int)pow(10,range)){
arr=(int *)malloc(range*sizeof(int));
}else{
range+=1;
arr=(int *)malloc(range*sizeof(int));
}
mirror(arr,num,i);
for(i=range-1;i>=0;i--){
printf("%d ",arr[i]);
}
printf("\n");
num++;
}
}
int mirror(int *arr,int num,int i){
if(num == 0){
return 0;
}
arr[i] = num%10;
mirror(arr,num/10,++i);
}
끔찍한 기억이 새고 있습니다. 그리고 그것은 당신의 이상한 가치로 이끌 수 있습니다; 새 배열을 제대로 초기화하지 못할 수 있습니다. 일반적으로, 당신은'else' 문에서'realloc()'을 사용할 것입니다. –
realloc을 사용하면 동일한 출력을 얻을 수 있습니다. ( –
그래, 메모리 누수가 발생했는데 코드에 무슨 문제가 있는지 잘 모르겠다. (아직) –