• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    해결됨

스택 오버플로우

22.12.27 14:52 작성 조회수 430

2

안녕하세요,

함수의 경우 스택에서 호출이 된다고 하셨는데,

그러면 재귀적으로 무한루프에 빠진 코드의 경우 스택 오버플로우가 발생하는 게 맞나요?

그리고 while이나 for문에서 무한 루프가 발생한 경우도 스택 오버플로우에 해당되나요?

또 힙 오버플로우는 어떤 경우에 발생하는지 궁금합니다.

답변 1

답변을 작성해보세요.

0

그러면 재귀적으로 무한루프에 빠진 코드의 경우 스택 오버플로우가 발생하는 게 맞나요?
YES! [무한루프]라기보단 [무한 재귀]에 빠졌을 경우 스택 메모리가 터져 오버플로우가 일어납니다.

그리고 while이나 for문에서 무한 루프가 발생한 경우도 스택 오버플로우에 해당되나요?
NO! 그건 그냥 코드가 먹통이 된 것이지 딱히 스택 오버플로우는 아닙니다.
스택 오버플로 잘못된 재귀 함수 호출로 터지는 경우(정말 메모리 고갈)
그리고 메모리 복사 과정에서 영역을 침범해서 복사하는 경우가 있습니다.

또 힙 오버플로우는 어떤 경우에 발생하는지 궁금합니다.
버퍼는 100바이트로 잡았는데 memcpy 등 복사 함수로 원래 영역을 한참 초과해서 복사할 때
이를 버퍼 오버플로우라고 하고, 버퍼의 할당 위치에 따라
'힙 오버플로우' or '스택 오버플로우'로 구분할 수 있습니다.