본문 바로가기

C언어

[C] 구조체 메모리 크기 계산 빠르게 정리

typedef struct 선언 시, 변수 선언에 대한 메모리 공간 크기에 대해서 알아보자.

 

  • char : 1 byte
  • int : 4 byte
  • double : 8 byte
  • pointer : (32bit) 4 byte, (64bit) 8 byte

 

sizeof 를 통해서 변수의 사이즈를 알 수 있다.

 

typedef struct student {
    char a;
    int b;
}S;

void main() {
    printf("메모리 크기 = %d/n", sizeof(S)); // 8
}

char + int 해서 5 byte일 것 같지만 8 byte이다. 

 

어떠한 연고로?

 

가장 큰 자료형 크기의 배수로 정렬한다

 

int 형이 4 byte이고 구조체의 멤버변수 중 제일 크게 차지하기 때문에 4 byte 단위의 메모리를 잡게 된다.

 

 

// 1)
typedef struct student1 {
    char a;
    char c;
    int b;
}S1;

// 2)
typedef struct student2 {
    char a;
    int b;
    char c;
}S2;

void main() {
    printf("메모리 크기 = %d/n", sizeof(S1)); // 8
    printf("메모리 크기 = %d/n", sizeof(S2)); // 12
}

 

같은 멤버변수로 구성된 구조체이지만 위치함에 따라서 메모리를 다르게 잡아먹는다.

 

 

'C언어' 카테고리의 다른 글

[C]void 포인터에 자료형 할당하기  (0) 2022.04.19
[C] 문자열 포인터와 문자열 배열 정리  (0) 2022.04.19