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

한울님의 프로필 이미지
한울

작성한 질문수

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

동적 할당 #2

heap overflow 예시에서

해결된 질문

작성

·

186

0

예시를 똑같이 작성하고 실습하였는데 아무리 시도를 해도 HEAP CORRUPTION DETECTED라는 내용은 안 나오고 중단점 명령 실행됨(중단점 명령이 ....exe에서 실행되었습니다)이라고만 나오는데

 

이 2개가 동일한 의미인가요?

답변 1

1

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

Visual Studio 버전에 따라 다를 수 있으니 신경쓰지 마세요!

한울님의 프로필 이미지
한울
질문자

1가지 더 궁금한 것이 있습니다

void* pointer = malloc();에서 malloc에

4를 입력하면 언급했던 내용이 나오고

12를 입력하면 정상적으로 종료되지만

8을 입력하면 이 경우에도 유효한 heap 범위를 초과하게 될 텐데 언급했던 내용이 나오지도 않고 정상적으로 종료되지도 않은 채 가만히 멈춰있는 것 같습니다(진단 세션 시간은 계속 증가)

이유가 무엇일까요?

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

우선 1 번 작성하셨으면 그냥 놔두시면 제가 시간 될 때 답변 드립니다.

질문주신 부분은 힙 할당 관련 내용인데
heap corruption은 애당초 추적을 하는 것이 100%가 아닙니다.
디버깅 모드라면 특정 값 (ex. 0xCC)를 이용해 지뢰밭을 설치해서
해당 부분이 수정 되었는지로 판별하지만,
애당초 이건 정확하지도 않고 디버그 모드에서만 작동하는 것이라 신뢰할 수 없습니다.
즉 터지지 않아도 문제가 없는게 아니라는겁니다.

그리고 할당하는 크기에 따라 메모리 할당 위치 및 다른 메모리 할당이 근처에 있는지 등
여러가지가 달라지기 때문에 딱히 왜? 라고 대답하기 힘듭니다.

한울님의 프로필 이미지
한울

작성한 질문수

질문하기