"board에 쓰는 동안 버퍼 오버런이 발생했습니다"
918
작성한 질문수 23
안녕하세요 달팽이 문제를 푸는데 답은 잘 나옵니다
그런데 SetBoard함수의 board[y][x] = i
이 부분에서 "board에 쓰는 동안 버퍼 오버런이 발생했습니다"라는 경고가 나옵니다
이러한 경고가 왜 뜨는지와 이 경고를 해결하려면 어떻게 코드를 수정해야 하는지 알 수 있을까요?
코드링크:
http://boj.kr/d69d82f1e84c49da942ec7948ab48529
답변 2
0
버퍼 오버런은 말 그대로 영역 밖까지 접근한 것인데요.
int arr[10]인데 arr[10]을 사용하면 원래 잘못된 영역에 접근한 것이겠죠.
for (int i = 1; i <= N * N; i++)
{
board[y][x] = i;
이 부분이 의심스러운데 board[MAX][MAX]에서 MAX가 N이기 때문에
MAX+1로 하거나 인덱스를 i=0에서 i < N*N로 한다거나 조정이 필요합니다.
0
안녕하세요, 인프런 AI 인턴이에요.
“board에 쓰는 동안 버퍼 오버런이 발생했습니다” 경고는 배열 범위를 벗어나서 메모리를 침범하고 있다는 뜻입니다. 버퍼 오버런은 다른 메모리 영역까지 침범하여 예기치 않은 동작이 발생할 수 있으므로 주의해야 합니다.
코드를 살펴보니 SetBoard 함수에서 다음과 같은 부분에서 버퍼 오버런 경고가 발생하고 있습니다.
board[y][x] = i
이 코드는 2차원 배열 board의 (y, x) 인덱스에 값을 저장하는 코드입니다만, 배열의 크기 범위를 벗어나기 때문에 경고가 발생하고 있습니다.
버퍼 오버런 경고를 해결하기 위해서는 배열의 크기를 체크하고 예외 처리해야 합니다. 그리고 배열 크기를 벗어났을 때 어떤 동작을 할지 결정해야 합니다.
예를 들어, board의 범위를 확인하고 범위를 벗어난 경우에는 값을 저장하지 않도록 처리할 수 있습니다. 아래는 예시 코드입니다.
def SetBoard(board, y, x, i):
if 0 <= y < len(board) and 0 <= x < len(board[0]):
board[y][x] = i
else:
# 처리할 동작 작성 (예: 경고 메시지 출력)
print("올바른 범위를 벗어났습니다.")
위의 코드처럼 배열의 범위를 확인하고 예외 처리를 하면 버퍼 오버런 경고를 해결할 수 있을 것입니다.
하지만, 제공해주신 코드링크를 확인해볼 수 없는 상황이므로 정확한 해결을 위해서는 코드를 직접 확인해야합니다. 코드에 문제가 있을 경우에는 코드 전체를 함께 공유해주시면 조금 더 구체적인 도움을 드릴 수 있을 것입니다.
참고로, 버퍼 오버런 경고가 발생하는 경우 배열 범위를 체크하고 예외 처리하는 것이 좋지만, 코드 전체를 확인해보고 개선할 수 있는 부분이 있는지 고려해야 합니다.
문제집은 없나요 수업을 어떻게 들어야 할지 모르겠어요
0
106
2
동적배열 Vector의 push_back 함수에서 조건문 질문
0
74
1
디버깅할때 메모리보는법 단축키가 뭐죠??
0
89
1
113-충돌처리 강의에서 22:26 부근의 SetPos()를 적용해도 충돌되지 않고 뚫고 지나가게 됩니다.
0
87
1
SaveFile에서 크래시 발생하는 분들 체크해보세요
1
70
1
수업자료 확인 부탁드립니다.
0
105
3
explicit을 붙였을 때 빨간줄이 뜨는 이유가 맞는지 궁금합니다.
0
100
0
22강에서 구조체와 포인터로 설명해주셨는데 패딩의 경우는 어떻게 되나요?
0
88
2
리소스 매니저 강의 18분 부근
0
89
1
[Service강의] owner -> shared_ptr
0
80
2
C#에서 생성자 관련 질문
0
83
2
특정 조건에서만 함수를 반환할 때
0
90
2
스택 empty
0
105
2
섹션4 배열실습 질문입니다.
0
132
1
섹션3 '파일분할' 강의 질문입니다.
0
99
1
Defines.h의 DECLARE_SINGLE관련 질문입니다.
0
110
1
세션8 우선순위 큐 pop함수의 Predicate 적용 관련 질문이 있습니다.
0
180
3
섹션9 함수 포인터 관련 질문입니다.
0
137
1
exercise_A 번 문제 해결방법에 대한 질문.
0
150
1
[강의명: virtual 소멸자] 자식 클래스의 소멸자에도 virtual 을 붙이시는 이유가 궁금합니다
0
198
2
Scene과 SceneManager 강의 수강 중 키보드 입력 오류
0
146
1
Window API 강의 수강 중 LARGE_INTEGER 타입 변환 오류
0
198
3
섹션15 스마트 포인터 20:00 질문이요!
0
127
1
55강 수업자료 빌드를 하면 이상합니다.
0
132
1





