2010-03-12 5 views

답변

1

INT32 및 INT64는 모든 플랫폼에서 같은 공간 소모한다 (Int32 형식 의미는 x86 및 x64 모두 다른 INT32과 동일한 금액을 소비한다). 모든 플랫폼에서 Int32는 Int64와 다른 양을 사용해야합니다.

그러나 구조체이므로 Int32와 Int64는 모두 좋지 않은 예제입니다. 객체는 기본적으로 포인터이고 x64의 포인터는 x86의 두 배입니다. 따라서 x64와 x86에서 상당히 다른 공간을 사용합니다. 이것은 기능 주소, 점프 주소, vtable, 호출 명령어 등에 적용됩니다. x64 용 컴파일 애플리케이션과 x64 용 IL 애플리케이션 JIT 코드는 x86 용 애플리케이션보다 훨씬 큽니다. 이전에는 컴파일러가 더 성숙했기 때문에 x86 코드 생성이 좀더 성숙하고 최적화 된 것으로 나타 났지만 (컴파일러가 JIT 코드 생성에도 적용 되었기 때문에) 컴파일러가 따라 잡았으며 이제는 x64 최적화가 수행 중이며, x86보다 좋지 않은 경우.

+0

답을 수정하십시오. 주어진 구조체 인스턴스는 모든 플랫폼에서 동일한 메모리 공간을 사용합니다. 다른 구조체는 동일한 플랫폼에서 다른 메모리 공간을 사용합니다. 플랫폼에 따라 다른 공간을 사용하는 객체 만. –

+2

@ estourodepilha.com : 항상 그런 것은 아닙니다. 한 가지 예는 구조체에 참조 유형 필드 또는 플랫폼 종속 필드가 들어있는 경우입니다. IntPtr - 동일한 구조체 선언은 x64에서 더 많은 메모리를 사용합니다. –

1

아니요, 주소 공간의 최소 크기가 64 비트이므로 동일한 양의 공간을 사용합니다.

+2

@ 루카스 : 레지스터에서 같은 공간을 사용합니다. 메모리 양이 다릅니다. –

1
+0

귀하의 답변은 도움이되지만 링크하려는 페이지의 요약 또는 관련 부분을 포함하여 [더 잘 만들 수 있습니다] (http://meta.stackexchange.com/q/8259). 이렇게하면 포함 된 링크가 앞으로 고장 나더라도 답변이 훌륭하게 유지되는 데 도움이됩니다. – derobert