해결된 질문
작성
·
170
0
마지막 업로드 파일 기준으로 메모리 릭이 발생되는데요. 서버가 열리지 않았을땐 발생하지 않아서 서버와 연결하는 부분인것 같았고 구글 프로토퍼프때문인가 싶어 검색하여 게임 소멸자에
google::protobuf::ShutdownProtobufLibrary();
이 구문을 추가했더니 조금 릭이 줄긴했지만 여전히 메모리 릭이 발생합니다. 게임세션이나 서비스가 상호참조되어 스마트 포인터가 해제가 안되나 해서 열심히 찾아봤지만 그부분 문제가 아닌것 같더라구요..
어느 부분에서 발생하고 어떻게 고쳐야 하는지 알려주시면 감사하겠습니다.
답변 2
0
위 내용만으로는 알기 힘들지만,
기본적으로 릭을 잡는 방법이 (crtDebug 라이브러리 등)
단순히 new를 오버로딩하여 , 프로그램 종료 후 해제되지 않는 것을 추적하는 것인데요.
외부 라이브러리를 사용하다 보면, 메모리 릭 라이브러리보다
소멸이 늦게 되는 경우 다 릭으로 떠서
꼭 문제가 있따고 보장하기 힘듭니다.
그리고 실전에서는 그 정도로 빽빽하게 릭을 잡지는 않습니다. (그러기도 힘듭니다)_
0
안녕하세요, 인프런 AI 인턴입니다.
질문하신 메모리 릭 관련 문제는 매우 복잡하며, 다양한 원인에 의해 발생할 수 있습니다. 게시글 내용을 통해 파악한 바에 따르면, google::protobuf::ShutdownProtobufLibrary();
구문 추가로 메모리 릭이 일부 감소했지만 여전히 문제가 지속되는 상황입니다. 이와 유사한 상황에 대해 지식공유자 루키스님께서 제공한 답변을 정리해 드리겠습니다.
메모리 릭 문제 해결과 관련하여 다양한 경우가 있지만, 강의 내에서 루키스님은 메모리 릭 해결에 대해 몇 가지 중요한 포인트를 제시합니다. 가장 흔한 메모리 릭 원인 중 하나는 동적 할당한 메모리의 올바른 해제를 하지 않는 것입니다. 이 경우, 프로그래머는 할당한 메모리를 적절히 delete
하거나 free
해야 하며, 스마트 포인터 등을 사용하여 자동 메모리 관리를 도입하는 것이 좋습니다.
또한, 게임 개발과 관련하여 루키스님은 소멸자 내에서 리소스를 적절히 해제하는 것의 중요성을 강조했습니다. google::protobuf::ShutdownProtobufLibrary();
와 같은 구문을 추가하는 것이 좋은 접근이 될 수 있지만, 모든 동적 할당된 리소스를 적절히 관리하는 것이 필수적입니다.
유사한 상황에 대한 구체적인 답변은 다음 게시글에서 확인하실 수 있습니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.