메모리 단편화
·
CS
1. 메모리 단편화(Memory Fragmentation)란 무엇인가?메모리 단편화는 시스템이 메모리를 할당하고 해제하는 작업을 반복하면서, 전체 메모리 공간이 점차 작고 연속되지 않은 빈 공간(조각, Fragment)들로 분할되는 현상을 말합니다. 마치 넓은 주차장에 차들이 드문드문 주차되어 있어 총 빈 공간은 많지만, 정작 대형 버스가 들어갈 연속된 빈 공간은 찾기 어려운 상황과 유사합니다. 프로그램이 특정 크기의 연속된 메모리 블록을 요청할 때, 시스템에 남아있는 총 여유 메모리 양이 요청 크기보다 훨씬 크더라도, 그 여유 공간들이 작은 조각들로 흩어져 있다면 요청된 크기의 연속된 공간을 찾지 못해 할당에 실패하거나 비효율적인 메모리 관리를 초래할 수 있습니다.2. 메모리 단편화의 종류: 내부 및 ..
가비지 컬렉션
·
CS
1. 관리되는 메모리(Managed Memory)와 가비지 컬렉션(GC)C# 코드는 .NET 런타임 환경(Unity에서는 Mono 또는 IL2CPP를 통해 구현됨) 위에서 실행되며, 이 환경은 관리되는 힙(Managed Heap) 이라는 메모리 영역을 사용합니다. 개발자가 new 키워드를 사용하여 클래스 인스턴스(객체)나 배열 등 참조 타입 데이터를 생성하면, 런타임은 이 관리되는 힙 영역에 필요한 메모리를 할당합니다. 중요한 점은, C++과 같은 비관리 언어(Unmanaged Language)와 달리 개발자가 delete 와 같은 연산자를 사용하여 명시적으로 메모리를 해제할 필요가 없다는 것입니다.대신, 가비지 컬렉터(Garbage Collector, GC) 라는 자동 메모리 관리 시스템이 주기적으로 ..
추상 클래스, 인터페이스, 가상 메서드
·
CS
1. 추상 클래스 (Abstract Classes)정의: 클래스 선언부에 abstract 키워드를 사용하여 정의하는 특수한 형태의 클래스입니다. 추상 클래스는 그 자체로 인스턴스화될 수 없으며(즉, new 키워드로 객체를 직접 생성할 수 없음), 다른 클래스가 상속받아 구현을 완성하기 위한 기반(Base) 클래스로 사용됩니다.특징:미완성 설계도: 추상 클래스는 완성된 구현(일반 메서드, 필드, 프로퍼티 등)과 미완성된 부분(추상 멤버)을 모두 포함할 수 있습니다.추상 멤버 포함 가능: abstract 키워드로 선언된 멤버(주로 메서드나 프로퍼티)를 가질 수 있습니다. 추상 멤버는 구현부({})가 없으며, 오직 시그니처만 정의합니다.구현 강제: 추상 클래스를 상속받는 자식 클래스는 부모 클래스에 정의된 모..
UnityEngine.Object와 System.Object 사이의 Fake null
·
CS
Unity의 C++ 기반과 C#의 사용Unity는 C++로 작성된 엔진 코어를 사용하고, 개발자는 주로 C#을 사용하여 스크립팅 작업을 합니다. 따라서, 개발자가 다루는 실제 객체는 C++로 구현되어 있지만, C#에서도 접근할 수 있도록 하기 위해 UnityEngine.Object라는 특수한 클래스를 제공합니다. Fake null이란?Fake null은 UnityEngine.Object가 C++ 객체를 래핑한 C# 객체라는 특성 때문에 발생합니다. C++ 객체는 메모리에서 해제되었지만 C# 객체는 아직 메모리에서 해제되지 않은 상황을 말합니다. 즉, Unity의 객체가 실제로는 파괴되었지만, 가비지 컬렉션(GC)에 의해 메모리에서 완전히 수집되지 않아 여전히 참조가 남아 있는 상태를 의미합니다.변수의 접..
박싱(Boxing)과 언박싱(Unboxing)이란?
·
CS
1. 값 타입(Value Type)과 참조 타입(Reference Type) 복습박싱/언박싱을 이해하기 위해 값 타입과 참조 타입의 핵심 차이를 다시 한번 상기해 보겠습니다.값 타입 (Value Types):데이터 값을 변수 자체에 직접 저장합니다.주로 스택(Stack) 메모리에 할당되거나 (지역 변수의 경우), 다른 객체 내부에 포함(Embed)되어 저장됩니다.int, float, bool, char, 모든 struct (구조체, 예: Vector3, Quaternion, Color, 사용자 정의 구조체) 등이 해당됩니다.다른 변수에 할당하거나 메서드 인자로 전달될 때 값이 복사됩니다.참조 타입 (Reference Types):데이터(객체)는 힙(Heap) 메모리 영역에 할당되고, 변수에는 이 힙 메모..
1의 보수와 2의 보수 개념과 계산
·
CS
1의 보수 (Ones' Complement)1의 보수는 이진수의 음수를 표현하는 방법 중 하나입니다. 각 비트를 반전시켜 음수를 표현합니다. 예를 들어, 4비트 1의 보수로 -3을 표현하면 다음과 같습니다:십진수이진수 (4비트)1의 보수-311010010 1의 보수의 단점은 0의 표현이 여러 가지 방법으로 가능하다는 것입니다. 예를 들어, 4비트에서 0은 0000 또는 1111로 표현될 수 있습니다. 15 - 8의 연산예시는 다음과 같습니다.(1)  15를 4비트 이진수로 표현(2)  8을 4비트 이진수로 표현(3)  1의 보수를 취함(4) 덧셈을 수행(5) 계산결과111110008의 1의 보수: 0111(오버플로우 발생시 뒤에 붙힘) 1111 + 0111 = 1 0110= 0111이진수: 0111십진수..