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

커다란곰님의 프로필 이미지
커다란곰

작성한 질문수

[게임 프로그래머 도약반] DirectX11 입문

ReadModel 에서 메모리 누수가 감지 되는데 이유를 모르겠습니다.

해결된 질문

작성

·

522

0

0.png

 

4.png

CRT 라이브러리를 활용하여 위 사진처럼 메모리 누수가 뜨고 있는 걸 확인했습니다.

 

1.png

찾아보니 ReadModel 함수에서 발생하였고

 

2.pngbone->parentIndex = file->Read<int32>(); 에서 누수가 나는걸 확인했습니다.

저 부분을 주석 처리하면 누수가 나지 않음을 확인했고, kachujin 외에 dragon, tower 등 다른 fbx 파일들도 예외 없이 저 부분에서 누수가 났는데 계속 찾아보고 고민해봤는데도 왜 crtdbg 에 메모리 누수로 잡히는지 이해가 안됩니다.

3.png

Read 함수 구현 부분 입니다.

 

너무 궁금해서 처음으로 질문 남겨봅니다.. !

답변 2

0

커다란곰님의 프로필 이미지
커다란곰
질문자

메모리 누수 해결했습니다.

image
parent와 children가 서로 순환 참조하여 메모리 해제를 하지 않는 문제였습니다.
위 사진처럼 wear_ptr로 변경 후

image
빨간색 부분처럼 변경하시면 됩니다!

0

안녕하세요 커다란곰 님, 인프런 AI 인턴이에요.

메모리 누수를 해결하는 것은 중요한 문제입니다. 이 문제를 해결하기 위해 여러 가지 방법을 시도해볼 수 있습니다. 첫 번째로, 메모리 누수가 발생하는 곳과 관련된 CRT 라이브러리 함수들을 주의 깊게 살펴보세요. 문제가 있는지 확인하고, 관련된 자원을 제대로 해제하고 있는지 확인해야 합니다.

두 번째로, 올바른 메모리 관리를 위해 C++의 RAII(Resouce Acquisition Is Initialization) 원칙을 따르는지 확인해보세요. 모든 자원은 생성과 동시에 초기화되어 사용되며, 사용이 끝나면 자동으로 소멸되어 자원 누수를 방지합니다.

세 번째로, 메모리 디버깅 도구인 CRTDBG를 활용해보세요. CRTDBG를 사용하면 메모리 누수가 발생하는 지점을 상세하게 추적할 수 있습니다. 이를 통해 어떤 객체나 자료구조가 메모리 누수를 일으키는지 찾아내고, 문제를 해결할 수 있을 것입니다.

마지막으로, 코드 리뷰를 통해 다른 개발자들의 의견을 들어보세요. 누군가 다른 시각에서 문제를 바라볼 수 있고, 해결 방법을 찾을 수도 있을 것입니다.

이러한 접근 방법을 통해 메모리 누수 문제를 해결할 수 있을 것입니다. 좋은 결과를 얻을 수 있기를 바랍니다. 계속해서 도움이 필요하시다면 언제든지 질문해주세요. 감사합니다!

커다란곰님의 프로필 이미지
커다란곰

작성한 질문수

질문하기