ggangmy   3년 전

제가 여태 알아왔던 것은, 데이터를 저장하는 공간이 4*20 바이트라고 예를 들었을 때,

4*20 바이트를 초과하는 (ex. 4*21, 4*22, ... ) 데이터를 입력하려고 할 때, 버퍼 오버플로우가 발생하는 것으로 알고있습니다.

MSVC 2019 기준으로 22번째 줄의 소스 { DP[1][0] = SCORE[1] } 에서 경고가 발생했는데요. ( 실행 및 동작은 정상적으로 이루어지는 걸로 보입니다. )

"경고 C6386 : 'DP'에 쓰는 동안 버퍼 오버런이 발생했습니다. 쓰기 가능한 크기는 'N*4'바이트인데 실제로는 '8'바이트만 쓸 수 있습니다."

"경고 C6385 : 'SCORE'에서 잘못된 데이터를 읽고 있습니다. 읽기 가능한 크기는 'N*4'바이트인데 실제로는 '8'바이트만 읽을 수 있습니다."

위의 경고가 제대로 잘 이해가 안됩니다.

다음 소스 코드에서, 왜 버퍼 오버런이 발생하는 건가요 ? ( 채점 결과도 '런타임 에러'입니다. )

그리고 왜 MSVC 2019 환경에서는 정상적으로 동작하는 건가요 ?

ggangmy   3년 전

다시 생각해보니, N이 1인 경우에 문제가 되는군요!

해결됐습니다 ㅎㅎ

pichulia   3년 전

N=1일 때 문제가 발생합니다.

경고메세지는 잘 모르겠네요..

djm03178   3년 전

해당 경고 메시지는 약간 버그성인 것으로 보입니다. 그 경고가 발생했지만 실제로는 아무 문제 없었다는 글을 쉽게 찾아볼 수 있습니다.

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