강좌 & 팁
변수가 메모리에서 차지하는 크기를 확인할 때 사용하는 것이 sizeof()입니다.
혹시 구조체로 선언한 변수의 크기를 확인할 때 sizeof()에서 어떤 이름을 사용하시나요?
구조체 이름을 사용하시나요? 아니면 변수 이름을 사용하시나요?
예를 들어 아래의, dt_now의 크기를 확인할 때 date_t로 확인하시나요? 아니면 dt_now를 확인하시나요?
typedef struct{
int year; ///< 년
int month; ///< 월
int day; ///< 일
} date_t;
date_t dt_now;
개인적인 생각입니다만, 변수의 크기를 확인할 때는 sizeof()에 변수 이름을 사용하는 것이 직관적입니다.
dt_now_size = sizeof( dt_now);
그러나 경험으로 바탕으로 저는 변수 이름 대신에 구조체 이름을 사용합니다.
dt_now_size = sizeof( date_t);
dt_now_size = sizeof( p_date)
mallocI()를 사용하여 p_date에 메모리를 할당해도 p_date의 크기는 포인터 변수 크기,
즉 32비트 시스템에는 32 비트 크기로, 64비트 시스템에는 64비트의 크기로 반환할 뿐
date_t 구조체의 크기를 반환하지 않지요.
그래서 구조체의 크기를 확인할 때는 변수 이름 대신에 구조체 이름을 이용합니다.