Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C/C++에서 포인터의 크기는 얼마일까? 아키텍처별 차이 완벽 정리

C/C++에서 포인터의 크기는 고정된 값이 아닙니다

C/C++에서 포인터의 크기는 표준으로 정해진 고정값이 아니며, 운영체제(OS), CPU 아키텍처 등 여러 요소에 따라 달라집니다. 일반적으로 포인터 크기는 프로세서의 워드(word) 크기, 즉 CPU가 한 번에 처리할 수 있는 기본 데이터 단위에 의존합니다.

32비트 vs 64비트 시스템에서의 포인터 크기

가장 대표적인 예는 다음과 같습니다.

  • 32비트 컴퓨터: 포인터 크기는 보통 4바이트(32비트)
  • 64비트 컴퓨터: 포인터 크기는 보통 8바이트(64비트)

즉, 특정 아키텍처가 정해지면 그 환경에서의 포인터 크기는 항상 동일하게 고정됩니다.

포인터 크기는 데이터 타입과 무관합니다

중요한 점은 포인터가 가리키는 대상의 자료형과 관계없이 모든 포인터의 크기가 같다는 사실입니다. int*, float*, char*, double* 등 어떤 타입의 포인터든 같은 아키텍처에서는 동일한 크기를 가집니다. 그 이유는 포인터가 실제 데이터를 저장하는 것이 아니라 메모리 주소를 저장하기 때문입니다.

sizeof 연산자로 직접 확인하기

실제 개발 환경에서 포인터 크기를 확인하려면 sizeof 연산자를 사용하는 것이 가장 확실합니다.

#include <stdio.h>

int main(void) {
    printf("int* 크기: %zu 바이트\n", sizeof(int*));
    printf("float* 크기: %zu 바이트\n", sizeof(float*));
    printf("char* 크기: %zu 바이트\n", sizeof(char*));
    return 0;
}

64비트 시스템에서 위 코드를 실행하면 세 값 모두 8이 출력되고, 32비트 시스템에서는 4가 출력됩니다.

핵심 정리

  • 포인터 크기는 운영체제와 CPU 아키텍처에 따라 결정됩니다.
  • 32비트 시스템에서는 주로 4바이트, 64비트 시스템에서는 주로 8바이트입니다.
  • 포인터 크기는 가리키는 자료형(int*, float* 등)과 무관하며, 같은 아키텍처에서는 모두 동일합니다.
  • 정확한 크기가 필요하다면 sizeof 연산자로 직접 확인하는 것이 안전합니다.