2010-06-12 5 views

답변

8

훨씬 더 구체적이어야합니다. 당신에 대해 궁금 :

  • 메모리에 변수의 크기가 식
  • 크기에서 사용할 수 있도록 스택 IL에 그 값을로드하기 위해 그 값을
  • MSIL의 크기를 유지 MSIL의 값
  • 런타임하여 MSIL로부터 제조 기계어의 크기를 유지하는 가변 할 수있는 부재를 선언
  • MSIL의 크기의 값을 유지하는 로컬 변수 가능한 선언
  • 메타 데이터의 크기 및 이와 관련된 디버그 정보
  • 다른 정보가 있습니까?

프로그램에 나타나는 (int)72과 같은 정수 리터럴의 모양과 관련된 많은 "비용"이 많이 있습니다. 더 큰 표현식의 일부인 경우, 리터럴의 한계 런타임 비용이 아무 것도 아닐 정도로 컴파일 시간에 단순화가 발생할 수 있습니다 (디버거가 소스 코드의 더 긴 스 니펫을 표시하는 것을 제외하고).

+0

아, 구문에 대해 좋은 점. 지금 너무 피곤하다, 나는 완전히 그것을 간과했다 : | – Joey

0

문자열의 길이는 얼마나됩니까?

어떤 프로세서 아키텍쳐가 실행 중인지 (사용하는 컴파일러에 따라) 달라질 수 있습니다. This page에서 설명하고 답변을 제공합니다.

+3

다행히도 Common Type System 사양에서 'int'는 모든 아키텍처 및 컴파일러에서 32 비트입니다. –

2

대부분의 경우 스택에서 4 바이트를 소비합니다. int은 에 Int32에 매핑되는 C# 키워드이기 때문입니다.

박스가 있어야하는 경우 상황이 좀 복잡해집니다. 복싱에 대한 설명은 this 문서를 참조하십시오. 박스형 값은 실제로 힙에서 12 바이트 시스템 (32 비트 시스템 이상)을 소비합니다. 실제 데이터는 4, 싱크 블록은 4, 유형 핸들 또는 메소드 테이블은 4입니다.

질문이 그렇게 간단하지 않습니다.

관련 문제