
sizeof 함수는 변수의 실제 크기를 반환하는 것이 아니라, 변수의 자료형 크기를 반환합니다. 포인터 변수는 주소 값을 저장하기 때문에, sizeof 함수는 포인터 변수의 실제 크기 대신 주소 값의 크기를 반환하지 않습니다.
포인터 변수의 크기는 운영 체제와 컴파일러에 따라 다를 수 있습니다. 일반적으로 32비트 운영 체제에서는 포인터 변수의 크기는 4바이트, 64비트 운영 체제에서는 포인터 변수의 크기는 8바이트입니다.
예를 들어, 32비트 운영 체제에서 int *ptr; sizeof(ptr); 라고 하면 sizeof 함수는 4바이트를 반환합니다. 이는 포인터 변수의 실제 크기인 4바이트를 반환하는 것이 아니라, 운영 체제의 포인터 변수 크기인 4바이트를 반환한 것입니다.
포인터 변수의 크기를 구하려면, sizeof 함수를 사용하는 대신에 sizeof(void*)를 사용하면 됩니다. void*는 포인터 변수의 자료형을 나타내는 특수한 자료형입니다. sizeof(void*)를 사용하면 운영 체제의 포인터 변수 크기를 반환합니다.
예를 들어, 32비트 운영 체제에서 int *ptr; sizeof(void*); 라고 하면 sizeof 함수는 4바이트를 반환합니다.
2025-03-24 06:51