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

가나파이님의 프로필 이미지
가나파이

작성한 질문수

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

디버깅 문제 풀이 #1

exercise4번에서 AddHp 함수를 수정했는데 이상하게도 예외가 발생합니다.

작성

·

188

0

int _maxHp를 멤버변수로 추가하고, addHp 함수를 수정하였습니다. 그런데 디버깅을 하면 아래와 같은 메세지가 나옵니다.

예외 발생(0x00007FF7C35F146A, Exercise_4.exe): 0xC0000005: 0x00007FF7C35F146A 위치를 실행하는 동안 액세스 위반이 발생했습니다..

확인해보니 AddHp 하는 부분에서  i가 8538에서 예외가 발생하는데 이유를 모르겠네요.. 

디버깅 안하고 실행만 하면 정상적으로 실행이 되긴합니다.

void Knight::AddHp(int value)
{
	_hp += value;
	if (_hp < 0)
		_hp = 0;
	if (_hp >= _maxHp)
		_hp = _maxHp;
}

답변 1

1

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

액세스 위반이 발생한다면 AddHp 자체의 문제는 아니고
그 전에 해당 객체의 메모리가 날라갔을 확률이 높습니다.
knight 객체를 삭제하는 부분이 미리 실행되지 않았는지 확인하셔야 합니다.

가나파이님의 프로필 이미지
가나파이

작성한 질문수

질문하기