inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

Memory Pool #3

마이크로소프트 제공 SList 는 use-after-free 에 대하여 안전한가요??

331

우웅

작성한 질문수 10

0

마이크로소프트 제공 SList 를 모방하는 과정에서

SList 는 여전히 use-after-free 에 대하여 취약하다고 말씀하셨는데 마이크로소프트에서 제공하는 SList를 사용 할 때도

일반적인 상황에서는 안전한 것인지 궁금합니다

제 생각에는 수업의 경우 메모리 풀이라는 특수 상황에서는 free가 일어나지 않으니 일단 안전한다고 생각하는데 메모리 풀이라 안전한 것이지? 그렇지 않은 경우는 또 어떨지 궁금합니다.

네트워크 MMORPG windows-server

답변 1

0

인프런 AI 인턴

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

우웅님의 질문에 대해 답변드리겠습니다. 마이크로소프트에서 제공하는 SList는 성능과 관리의 용이성을 목적으로 설계되었습니다. 일반적인 사용 상황에서는 안전한 메커니즘을 제공하려고 노력합니다. 하지만, 모든 상황에서 use-after-free 취약점이 완벽히 예방되는 것은 아닙니다.

use-after-free 문제는 프로그램이 이미 해제된 메모리에 접근할 때 발생합니다. 이는 SList 자체의 문제라기보다는 메모리 관리 방법과 개발자의 코드 구현 방식에 더 많이 좌우됩니다. 따라서, 메모리 풀을 사용하는 경우처럼 특수 상황에서는 메모리가 명시적으로 관리되므로 use-after-free 문제를 피할 수 있습니다.

하지만, 메모리 풀을 사용하지 않는 일반적인 상황에서도 SList를 사용할 때 주의해야 합니다. 개발자는 메모리의 할당과 해제를 신중하게 관리하여 이러한 문제를 방지해야 합니다. 즉, 메모리 풀이 있는 경우 안전성이 더 높아지지만, 그렇지 않은 경우에도 개발자의 주의 깊은 메모리 관리가 필요합니다.

use-after-free 문제를 방지하기 위해서는 메모리 할당 및 해제 시점을 명확히 하고, 이미 해제된 메모리에 대한 참조를 방지하는 코딩 관행을 따르는 것이 중요합니다. 또한, modern C++의 smart pointer들 같이 안전한 메모리 관리를 지원하는 기능을 적극적으로 사용하는 것도 좋은 방법입니다.

보다 세부적인 내용이나 구현 상의 질문이 있으시면 추가적으로 문의해 주시기 바랍니다.

Memory Pool에서 오버플로우 질문입니다.

0

63

2

포토폴리오 및 진로 관련하여 고민입니다.

0

112

1

포토폴리오 관련 고민입니다.

0

62

1

실무에서도 alloc, 스마트포인터 등을 구현해서 쓰는지 궁금합니다.

0

82

2

성능 테스트 결과

0

103

2

게임 서버 Stateful, Stateless 진로 고민

0

121

1

WaitOnAddress와 Sleep의 차이 질문

0

83

1

궁금한거 있습니다.

0

82

2

JobTimer 구동 스레드

0

107

2

TryPop() 동작 관련 질문

0

81

1

로드맵 C#서버 C++서버 방향성 질문

0

148

2

스레드 id를 출력할떄 메인스레드 id도 출력되나요?

0

73

1

생명주기를 위한 의도적 복사

0

86

2

락프리의 실무에서 사용 질문

0

139

2

32bit threadID와 16비트 상위 WriteFlag에 대해

0

101

2

mutex와 sleep 차이점

0

117

1

실무에서는 어떠한 코드 스타일을 사용하는지 궁금합니다

0

152

2

Stomp Allocator의 Release함수에 대한 질문입니다.

0

96

1

공부법 관련해서

0

183

2

MakeShared 함수 관련

0

114

1

지금까지 서버코어에서 만든 내용에 대해 궁금한 점이 있어서 질문 드립니다.

0

144

2

운영체제관련 질문입니다

0

131

1

send하려는 데이터 크기가 크면 memcpy에서 문제가 발생할 것 같습니다.

0

117

2

메모리 풀 질문있습니다.

0

124

1