원래 C++으로 만들다가 2D 게임 하나 만들고 있어서 유니티 잠깐 맛보고 있는데 메모리 관리가 잘 이해가 안감
C++은 원래 Ref Count 관리 직접 해주면서 Delete 해야하는데 C#은 Ref Count를 자동으로 관리하면서 0이 됬을때 GC가 발동되면 메모리를 수거한다는 것은 알겠음
그러면 C# 유니티를 사용할 때는 Ref Count를 아이에 관리 안해도, 예를 들어 Map 컨테이너에 여러 GameObject들을 담아놨어도 걍 Destroy 해버리는 순간 알아서 메모리가 전부 해제되버리는거임?
그렇다면 C++의 서로가 서로를 물고있는 상호 참조 같은 문제가 생겼을 때도 Destroy되는 순간 그냥 Ref Count가 강제적으로 0이 되나?
아니라면 OnDestroy 등에서 자기가 참조하고 있는 객체들을 null 값으로 채워줘야 하나
해당 댓글은 삭제되었습니다.
유니티에서 C++단의 엔진이 있어? 내가 아직 지식이 얕아서 그런데 어느 키워드로 검색해야될지 알 수 있을까 그대로 검색하면 정보가 안나와서
댕큐합니다
순환 참조 상태여도 gc는 마크 앤 스윕 방식으로 쓰여지고 있는지를 판단하니까 메모리 해제가 됨. 언리얼도 그렇게 하고 유니티도 비슷할거임
C# 완전 개사기 언어잔아,,,
c++도 가비지컬렉터가 도나?
내가 바보였던듯 ㅋ C/C++이 메모리 관리해주는거 첨 알았네
없지 않나.. 쉐어드포인터 같은 거 말곤
뭐 Shared Pointer라던가 직접 부모 클래스로 Ref Count 관리해주는 방법이라던가 등등 말고는 GC는 없읆,,,
해당 댓글은 삭제되었습니다.
진자 명쾌한 설명 댕큐드립니다,,, 이해 됬음
gc가 단순히 ref count가 0인지로 정리하는 식이 아니라서 그럼. 내가 도달할 수 없는 오브젝트면 해제를 하는 식이라서 너가 언급한 상호참조 문제는 gc가 되긴함