jeonghoon   8년 전

비쥬얼 스튜디오에서 컴파일하면 잘 돌아가는데, 여기서 돌리면 런타임 에러가 나네요..

배열의 크기를 a[1111111]로 잡아봐도 런타임 에러가 나네요..

어디서 오류가 나는지 잘 모르겠어요.. 조언을 주시면 감사하겠습니다.

ntopia   8년 전

1.

입력으로 주어지는 A, B는 1010000  이므로

최악의경우 각각 9999자리 숫자가 되겠죠

따라서 배열의 길이가 최소한 10000은 되어야 할 것입니다

일단 위의 코드 상으론 배열길이가 너무 짧네요

2.

gets 함수는 한줄에 있는 데이터를 전부 읽어들입니다

그런데 이 문제에서는 A와 B가 같은 한 줄에 주어집니다

따라서 gets(a) 하고나면 A와 B가 전부 a배열에 들어가게 되고

b배열엔 아무것도 없어서 꼬이게 될 것 같네요

3.

그리고 함수 안에 엄청 큰 배열을 선언하는 것도 런타임에러를 유발할 가능성이 있습니다.

함수 안에 선언된 데이터는 스택 공간에 잡히는데, 스택 공간이 생각보다 크지 않습니다

큰 배열은 전역에 선언하거나  new / malloc 등으로 동적할당 받는 것이 안전합니다.

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