메모리 동적 할당 데이터 영역과 스택 영역에 할당되는 메모리의 크기는 컴파일 타임(compile time)에 미리 결정된다. 힙 영역 크기는 프로그램 실행 후 런 타임(run time)에 사용자가 직접 결정한다. 런 타임 메모리에 할당받는 것을 메모리 동적 할당이라 한다. 유연한 메모리 관리 동적 할당은 프로그램에 필요한 만큼 메모리를 사용하며, 더 이상 필요하지 않을 경우 메모리를 해제하여 시스템 자원을 효율적으로 관리한다. 메모리 공간 절약 동적 할당은 필요한 만큼의 메모리를 할당하므로 공간 효율성이 높다. 복잡한 데이터 구조 생성 동적 할당을 통해 복잡한 데이터 구조(예: 동적 배열, 링크드 리스트, 트리)를 생성할 수 있으며, 필요에 따라 크기를 조정할 수 있다. 메모리 누수 방지 정확한 메모리 ..
개요 유니티 프로젝트를 진행하며 코드 작성 중 궁금한 점을 발견했다. 스크립트 _SCRIPT = null; // 스크립트 변수 선언 if(_SCRIPT == null && (_SCRIPT = gameObject.GetComponent()) == null) { _SCRIPT = gameObject.AddComponent(); } if문을 통해 스크립트 변수가 연결되어있는 스크립트가있는지 확인 (변수가 Null인가) 스크립트 변수가 할당되어 있지 않다면 현재 오브젝트에 해당 스크립트 호출 해당 스크립트가 현재 오브젝트에 존재하지 않는다면 새로운 컨포넌트로 스크립트 입력 후 변수와 연결 즉, 2번과 a는 하나의 if문에 구성되지만 if문은 둘을 모두 확인하고 결과를 넘어가는 것인지 첫번째 조건이 불충족시 바로..

메모리 할당 로직 C#은 코드 컴파일 후 실행파일을 만들고 파일을 실행하면 CLR이 프로그램을 위해 메모리의 일정 구역을 확보한다. 넓은 공간을 통째로 확보 후 하나의 생성 CLR이 확보한 힙의 첫 주소는 "다음 객체 할당을 위한 메모리 포인터"로 선정 결과적으로 프로그램이 실행되면 프로그램을 위한 메모리 공간 확보 및 첫 주소값 메모리 포인터 할당이 이루어진다. 데이터 영역별 메모리 할당 힙영역 참조 형식(참조 타입) 객체와 동적으로 할당된 객체는 힙에 할당 힙에는 객체의 실제 데이터가 저장 스택이나 다른 객체에서 해당 객체를 참조할 때 사용되는 참조(주소)가 힙 영역에 저장 다음과 같이 새로운 오브젝트를 선언한다. object obj1 = new object(); 이러면 힙에 새로운 메모리를 할당한 ..
StringBuilder 변경이 가능한 문자열을 나타내는 클래스 string 객체는 값이 변경되면 메모리에 새로운 참조 값을 생성하고 이전 참조 값을 버린다. StringBuilder는 객체의 참조 값을 변경하지 않고 힙 메모리에서 값이 삽입, 추가, 제거될 수 있다. 즉, 문자열을 반복적으로 수정해야하는 경우 객체 생성 StringBuilder 클래스는 System.Text 네임스페이스의 객체이므로 using문에 다음과 같이 System.Text를 추가한다. using System; using System.Text; StringBuilder 개체 인스턴스화 StringBuilder 객체 선언 및 초기화는 일반 객체와 동일하다. 다음은 StringBuilder 객체를 생성과 생성과 초기화를 함께 하는 예..