Soft Ware/C 언어!!

구도체 및 함수 인자 값 일 때 메모리상 데이터

달려가보자 2011. 8. 7. 09:52

#include <stdio.h>

typedef struct _STRUCT
{
char a;
int b;
}STRUCT;

int main()
{
printf("%d\n", sizeof(STRUCT));
}

사이즈 : 8

이유 : 컴퓨터 운영체제가 32비트 일때는 처리를 빠르게 하기 위해서 32비트 단위로 처리하는데
        그래서 구도체 안에서 가장 큰 형을 기준으로 메모리 공간을 가지게 된다.


#include <stdio.h>

typedef struct _STRUCT
{
char a;
int b;
char c;
}STRUCT;

int main()
{
printf("%d\n", sizeof(STRUCT));
}

size : 12

이유 : char 가 먼저 와서 4바이트 할당 그리고 int 형이므로 4바이트 할당 char가 다시 와서
         4바이트 할당


#include <stdio.h>

typedef struct _STRUCT
{
char a;
char c;
int b;
}STRUCT;

int main()
{
printf("%d\n", sizeof(STRUCT));
}

size : 8

이유 : 이경우에는 char 형이 1바이트 다음에 char 형 1바이트 할당하고 나서 2바이트를 빈공간 처리
         그리고  int형이므로 4바이트 할당