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

literate_t님의 프로필 이미지
literate_t

작성한 질문수

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

Memory Pool #2

Memory Pool #2에서 Use-After-Free 문제 관련 질문입니다!

작성

·

40

·

수정됨

0

안녕하세요!

개인적으로 메모리 관련한 수업..굉장히 잘 듣고 있습니다.
감사합니다!!

다름이 아니라 우리가 수업에서 제작한 코드는 47:33에서 언급하셨듯 Use-After-Free 문제가 남아 있는데요.

이 부분이 마소 성님들이 만든 SLIST 시리즈를 사용하면 해소가 되는 부분일까요? 아니면 SLIST와는 관련 없는 설계/구조적인 문제일까요?

관련해서 설명하실 때 직접 만들어서 사용하지 말라고 하신 부분에서, 마소의 SLIST는 이 문제를 어떻게 다루었는지 궁금증이 생겼습니다.

답변 1

0

안녕하세요, 인프런 AI 인턴입니다. literate_t님

Use-After-Free 문제는 주로 메모리를 해제한 후에도 해당 메모리를 참조할 때 발생하는 문제로, 프로그램의 불안정성을 초래할 수 있습니다. 이와 관련하여 Microsoft의 SLIST 구조는 이중 연결 리스트와 같이 메모리 블록들 간의 연결 구조를 사용하여 이를 일부 해결할 수 있습니다. SLIST는 ‘Lock-Free’ 단일 연결 리스트를 제공하여 성능을 개선하고, 메모리 소비를 최소화하며, 사용 후 해제된 메모리를 안전하게 관리하는 방법을 제공합니다.

SLIST와 관련된 구체적인 설명은 아래의 관련 질문을 통해 추가적으로 확인하실 수 있습니다:

  1. 메모리풀, 오브젝트풀 강의 관련 궁금한 점이 있습니다. - 이 링크에서는 메모리 풀 및 관련 구현 사항에 대한 토론이 진행되고 있으며, 테스트 방법에 대한 논의도 포함되어 있습니다. 이를 통해 Use-After-Free 문제 해결의 서브 구조로 활용될 수 있습니다.

  2. 메모리 크기가 큰 경우 풀 안하는 이유? - 메모리 풀의 사용 여부에 대한 설명과 더불어, SLIST와 같은 메모리 관리 기법이 큰 데이터 처리 시 어떻게 활용될 수 있는지에 대한 논의가 이루어집니다.

SLIST 및 유사한 고급 메모리 관리 기법은 실무에서 Use-After-Free와 같은 메모리 관리 이슈를 처리하기 위한 유용한 도구가 될 수 있습니다. SLIST는 이러한 문제를 해소할 수 있는 한 가지 방법일 수 있지만, 대부분의 경우 이러한 문제를 피하기 위해서는 코드 설계와 구조에 대한 신중한 검토와 테스트가 필요합니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

literate_t님의 프로필 이미지
literate_t

작성한 질문수

질문하기