인프런 커뮤니티 질문&답변

쪼야님의 프로필 이미지
쪼야

작성한 질문수

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문

스택 오버플로우

해결된 질문

작성

·

710

2

안녕하세요,

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

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

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

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

답변 1

0

Rookiss님의 프로필 이미지
Rookiss
지식공유자

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

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

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


쪼야님의 프로필 이미지
쪼야

작성한 질문수

질문하기