[C#] new 명령 수행 시 일어나는 과정

Date:     Updated:

카테고리:

태그:

new에 대해 공부하다가 알게된 정보를 정리한 글입니다.

참고 책 : CLR via C#

new 명령 수행 시 일어나는 과정

  1. 타입에 정의된 필드와 System.Object를 포함한 모든 상위 타입의 필드에 대하여 인스턴스가 필요로 하는 모든 바이트 수를 계산한다.
    • 힙 메모리에 로드되는 모든 객체는 추가적인 멤버가 필요하다. (값 타입 객체는 해당 멤버가 필요 없음)
    • 타입 객체 포인터동기화 블록 인덱스가 CLR에 의하여 관리되기 위해서 필요하다.
    • 이런 추가적인 멤버들에 의하여 객체의 바이트 크기는 약간 증가한다.
  2. 타입에 필요한 바이트의 메모리를 관리되는 힙에서 객체로 할당한다. 그런 후 모든 바이트를 0으로 초기화한다.
  3. 객체의 타입 객체 포인터동기화 블록 인덱스 멤버를 초기화한다.
  4. new를 호출함으로써 타입의 인스턴스 생성자가 호출되고 생성자를 통해서 지정된 인자가 전달된다.
    • 대부분의 컴파일러는 생성자 배우에서 기본 클래스의 생성자를 호출하는 코드를 자동 생성한다.
    • 각각의 생성자는 호출되는 생성자에 의하여 타입에 정의된 인스턴스의 필드를 초기화해야 한다.
    • 결론적으로 System.Object 생성자가 호출되지만 이 생성자 메서드는 특별한 작업을 하지 않고 바로 반한된다.


💻 열심히 공부해서 작성 중이니 오류나 틀린 부분이 있을 경우 
  언제든지 댓글 혹은 메일로 알려주시면 감사하겠습니다! 😸

맨 위로 이동하기

CSharp 카테고리 내 다른 글 보러가기

댓글 남기기