내용 보기
작성자
관리자 (IP : 106.247.248.10)
날짜
2022-12-28 09:49
제목
[기타] [스크랩] 구조체(Struct)와 공용체(Union)의 차이
공용체는 구조체와는 달리 메모리를 '공유'한다. 간단히 말해서 struct의 경우 각 멤버들의 메모리 시작 주소가 다르지만, union의 경우 각 멤버들의 시작 주소가 모두 동일하다. Struct(구조체)는 구조체 멤버 중 가장 큰 변수의 크기 값을 기준으로 잡고 기준 값의 크기에 나머지 변수를 순서대로 배치하여 구조체의 전체 크기가 결정된다. 예를 들어 구조체 멤버 변수로 long(8Byte), char(1Byte)를 둘 씩, int(4Byte)를 하나 선언할 경우 단순히 생각하면 구조체의 크기는 long(8) + long(8) + int(4) + char(1) + char(1) = 22Byte이지만, 실제로는 long(8) + long(8) + int2(8) + char2(8) = 32Byte이다.
반면 Union(공용체)의 크기는 공용체 멤버 변수 중 가장 큰 크기의 값을 하나 할당하고 모든 멤버가 그 메모리를 공유하게 된다. 예를 들어 공용체 멤버 변수로 long, int, char를 둘 씩 선언할 경우 그 중에서 가장 큰 long의 8바이트를 멤버 변수 전체가 공유해 총 크기가 8Byte가 된다.
|
출처1
https://blog.naver.com/ratoa/220658695667
출처2