void 포인터의 크기는 고정되어 있지 않으며, 프로그램이 실행되는 시스템 아키텍처에 따라 달라집니다. 포인터는 데이터 자체가 아니라 메모리 주소를 저장하는 변수이기 때문에, 그 크기는 시스템이 사용하는 주소 공간의 크기에 의해 결정됩니다.
- 16비트 시스템: void 포인터의 크기는 2바이트
- 32비트 시스템: void 포인터의 크기는 4바이트
- 64비트 시스템: void 포인터의 크기는 8바이트
다음은 C 언어에서 void 포인터의 크기를 실제로 확인하는 예제입니다.
예제
#include <stdio.h>
int main() {
void *ptr;
printf("포인터의 크기 : %d", sizeof(ptr));
return 0;
}
실행 결과
포인터의 크기 : 8
위 예제에서는 void 타입의 포인터 변수 ptr을 선언한 뒤, sizeof() 함수를 사용하여 해당 포인터의 크기를 구했습니다. 실행 결과가 8바이트로 출력된 것을 보면, 이 코드가 64비트 시스템에서 실행되었음을 알 수 있습니다.
void *ptr;
printf("포인터의 크기 : %d", sizeof(ptr));
핵심 정리
void 포인터는 어떤 데이터 타입이든 가리킬 수 있는 범용 포인터이지만, 그 자체의 크기는 일반 포인터와 동일하게 시스템의 워드 크기를 따릅니다. 따라서 이식성이 중요한 코드에서는 포인터 크기를 특정 값으로 가정하지 말고, 항상 sizeof() 연산자를 통해 직접 확인하는 것이 좋습니다.