retrogemhk   2년 전

제가 컴파일 해보면 잘 되는데...

어디가 문제일까요ㅠㅠ

pichulia   2년 전

런타임에러 원인이 여러가지 있는데

그 중 하나는 배열의 인덱스를 잘못 접근했을 때 입니다.

예를 들어 int a[10]; 을 잡았는데

sum += a[1003]; 라거나

sum += a[-20]; 처럼

0~9 사이의 숫자가 아닌 인덱스를 a에 넣게 되면 런타임 에러가 발생하는게 가장 흔한 일입니다.


현재 코드같은 경우 output_Num 의 배열의 크기가 10001 인데

1,000,000 자리 2진수가 들어오게 되면 8진수의 자리수는

333,334 자리가 됩니다. 즉, k 값이 10001을 한참 넘어가게 되죠

그래서

for (int i = k - 1; i >= 0; i--)

printf("%d", output_Num[i]);

ㅇㅣ 부분에서 런타임 에러가 발생하는 것입니다.



해결방법은 간단합니다.

int *output_Num = (int *)malloc(sizeof(int)* 1000001);

이렇게 output_Num 의 배열 크기를 늘려보세요ㅋ

retrogemhk   2년 전

앜ㅋㅋ 이런 초보적인 실수를.. 감사합니다!!

댓글을 작성하려면 로그인해야 합니다.