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

초보언리얼님의 프로필 이미지
초보언리얼

작성한 질문수

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

타입 변환 #5

강의 내용의 메모리 해제 관련 (메모리 누수)

작성

·

264

0

강의 내용에 위와 같이 나오는 부분에서,

Item에 들어가있는 Armor와 Weapon 클래스의 멤버 변수가 int attack 처럼 단순한 일반 변수만 있다고 했을때,

위의 경우도 여전히 메모리 누수 현상이 벌어지지 않나요? Item을 기준으로 delete를 했기 때문에, Armor나 Weapon의 int attack 멤버변수는 Item 소멸자만 호출되기 때문에 본인들의 소멸자가 불리어지지 않아서 해제되지 못하기 때문에 계속 쌓인다고 이해했는데 혹시 잘못 이해했을까요?

다른 질문내용을 살펴보니, 다른 학생은 상속된 자식의 멤버변수에 또다시 동적할당을 받는 포인터 변수가 있는 상황에서만 메모리 누수가 된다고 말하는것 같아서 이해가 안가서 질문을 추가로 남겨봅니다.

답변 1

2

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

위의 경우도 여전히 메모리 누수 현상이 벌어지지 않나요?

아뇨 일어나지 않습니다.


Item을 기준으로 delete를 했기 때문에, Armor나 Weapon의 int attack 멤버변수는 Item 소멸자만 호출되기 때문에 본인들의 소멸자가 불리어지지 않아서 해제되지 못하기 때문에 계속 쌓인다고 이해했는데 혹시 잘못 이해했을까요?

소멸자 호출 여부는 제대로 이해하셨지만, 실제 할당된 메모리 크기는 그쪽에서 관리하는게 아니라
힙 공간에 메모리 크기를 적어두고 그것을 토대로 메모리를 정리해주기 때문에 상관없습니다.
leak 여부에 의심이 간다면 무한루프를 돌면서 new delete를 해서 프로그램 메모리 사용량을 살펴보면 됩니다

초보언리얼님의 프로필 이미지
초보언리얼

작성한 질문수

질문하기