2014-12-15 2 views
1

int에 메모리를 할당했다면 보통 4 바이트가 주어질 것입니다. 이해할 수 있듯이이 4 바이트는이 변수의 전체 메모리 공간을 차지합니다.어떻게 그리고 왜 변수 유형 정보가 저장됩니까?

또한이 int에 대한 포인터가 있으면 4 바이트 중 첫 번째 주소가 유지됩니다.

그러나 내 프로그램에서 이러한 4 바이트의 데이터 유형이 단일 int로 구성된다는 것을 어떻게 알 수 있습니까? 그리고 내 포인터는 원시 데이터 만 보유하고있는이 주소를 보유하고 있기 때문에 보유하고있는 주소가 참조 해제 될 때마다 int로 해석되어야한다는 것을 어떻게 알 수 있습니까?

이 유형 정보는 어디에 있으며 프로그램에서 언제 어떻게 액세스합니까?

+2

'int로 해석되어야합니다. 글쎄,'char *'나'float * '가 아닌'int *'입니다. –

+7

정보는 소스 코드에 있으며, 컴파일러는 기계를 생성합니다 소스 코드에서 스펙을 존중하는 코드. 액세스 권한을 얻는 것은 컴파일러의 임무입니다. –

+2

컴파일 된 프로그램의 어느 곳에도 저장되지 않습니다. 그것을 처리하는 컴파일러입니다. –

답변

7

일단 C 프로그램을 컴파일하면 형식 정보가 본질적으로 손실됩니다 (또는 다른 방법으로 더 이상 필요하지 않음). 이는 C에서 메모리의 바이트를 해석 할 때 읽는 코드에 달려 있기 때문입니다. 예를 들어, int의 4 바이트를 char[4]으로 읽을 수 있습니다.

디버깅과 같은 특별한 이유로 특정 정보가 보존 될 수 있습니다. 그러나 이는 플랫폼 별 형식 (예 : Linux의 DWARF)으로 저장되며 C 표준의 일부가 아닙니다.

관련 문제