박싱과 언박싱 (Boxing & Unboxing) 박싱과 언박싱은 메모리 영역을 공부하면 알게되는 기법으로 값 형식의 데이터를 참조 형식으로 변환하는 과정을 박싱, 그 반대를 언박싱이라 한다. 박싱 (Boxing) 이해하기 쉽게 말하면, C#은 모든 객체의 최상단에 object가 있다. 즉, 모든 자료형은 object로 변환될 수 있다. 이러한 상황에서 int형 변수를 object로 바꾸어 보면 박싱이 되는 것이다. 박싱 (Boxing) int value = 42; // 값 타입 변수를 선언하고 초기화 object boxedValue = value; // 값 타입을 참조 타입으로 박싱하여 저장 주의할 점은 단순히 스택에서 힙으로 값을 복사하는 것이 박싱이 아니다. 클래스 객체를 new로 만들어 힙영역에 ..
개요 유니티 프로젝트를 진행하며 코드 작성 중 궁금한 점을 발견했다. 스크립트 _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 객체를 생성과 생성과 초기화를 함께 하는 예..
- Total
- Today
- Yesterday
- c++
- malloc
- 스레드
- const
- 할당
- 인터럽트
- 상속
- 구조
- 백준
- CPU
- 컴파일
- 크기
- 포인터
- 메모리
- 멀티스레드
- dynamic_cast
- 게임수학
- 입출력
- 클래스
- thread
- New
- 명령어
- 초기화
- 수학
- static_cast
- 함수
- 알고리즘
- 레지스터
- 프로세스
- 운영체제
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |