inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

D3D12 프로그래밍 - 기초편

Comptr 을 안쓸시 메모리 해제순서

282

dltmddnr05

작성한 질문수 3

0

혹시 Comptr 을 안쓸시 메모리해제를 직접해주고있는데 ,

Device 를 먼저 해제할시 ref값이 0 이 안나와서 DebugLeak 에 걸리게되던데

D3D12 객체들의 메모리 해제할때도 순서가 중요한건가요?

directx directx-12 d3d directx12

답변 2

0

megayuchi

d3ddevice에서 생성한 객체부터 먼저 해제하고 d3ddevice는 가장 나중에 해제하는게 기본입니다.

디버깅과 정확한 테스트를 위해서 d3d뿐 아니라 모든 com객체는 생성순서의 역순으로 해제하는게 좋습니다.

0

dltmddnr05

감사합니다!

0

인프런 AI 인턴

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

언급하신 방식(COMPTR을 사용하지 않고 메모리 해제)의 문제가 해결된 예시를 찾아보았습니다. 참고할 수 있는 두 가지 답변 URL을 제시해드립니다.

  1. 디버깅 할 때 훨씬 직관적입니다. 이유가 따로 있나요? - DirectX 객체의 생명 주기 관리와 메모리 해제 순서의 중요성에 대한 설명이 있습니다.

  2. Comptr를 사용하는 대신 raw pointer를 사용할 이유가 있나요? - 메모리 관리 및 객체 해제 순서에 대한 자세한 설명과 유사한 답변을 찾을 수 있습니다.

간단한 설명:

  • 메모리 해제 순서: D3D12 객체들 간에 상호 참조가 있을 수 있으므로, 메모리 해제 시 올바른 순서를 지키는 것이 중요합니다. 이를 무시하면 참조 카운트(Ref count)가 정확히 관리되지 않아 메모리 누수가 발생할 수 있습니다.
  • Ref count 문제: Device와 다른 D3D12 객체들 간의 참조 관계를 확인하고, 객체가 필요하지 않을 때 참조를 해제해줘야 합니다. 특히 Device를 해제하기 전에 종속성 있는 객체들을 먼저 해제해야 Ref count 문제가 발생하지 않습니다.

위 링크들을 통해 더 자세한 내용을 확인하실 수 있습니다.

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

복습중에 커맨드 큐 관련 질문이 있습니다.

0

35

1

assimp-vc143-mtd.dll가 없어서 코드 실행을 진행할 수 없습니다 라는 에러가 뜹니다.

0

78

1

_vsBlob와 _psBlob에서 nullptr이 뜨면서 실행이 안됩니다

0

56

1

혹시 영상이 안되는 이유가 있을까요?

0

87

2

Model.cpp에서 ReadMaterial()의 SpecularTexture 부분 질문입니다.

0

55

0

노멀매핑 자료

0

72

1

셰이더 인텔리센스 문제

0

79

1

#include d3dx12.h 추가했지만 오류

0

81

1

MeshObject 공용 사용 방법

1

95

2

BuildBLAS 할당 리소스 사이즈

0

79

2

4강 삼각형띄우기 오류관련 질문있습니다

0

64

1

ConstnatBufferPool관련 질문

0

69

2

LNK1104 error, DirectXTexD.lib 파일을 열 수 없습니다.

0

122

1

64.애니메이션 강의의, AssimpTool 에서 FBX 애니매이션 데이터를 옮길 때의 강의 오류가 있는 것 같습니다.

1

65

1

SkyDemo에서 카메라 입력이 작동하지 않는 문제

0

81

2

섹션6. DirectX 11 3D 입문 강의부터 렌더링이 안됩니다

0

131

2

CommandList의 GraphicsCommandList 변경이유

0

113

2

[25:13] Virtual Interface 와 COM Interface간의 차이가 궁금합니다.

0

116

1

텍스처와 UV 강의 관련해서 문의드려요

0

162

2

frame간 보간에 대해서 질문이있습니다.

1

132

1

Descriptor를 복사하는 이유

0

315

2

코드에 대한질문있습니다.

0

230

2

raw pointer 쓰시는 이유가 따로 있으신가요?

0

384

1

질문있습니다.

0

431

2