본문 바로가기
카테고리 없음

Struct Padding (구조체 패딩)

by ech97 2023. 12. 31.
Struct Padding

개요

구조체는 가장 높은 자료형 단위로 padding

  • 구조체 read의 비효율 해소

    아래와 같은 상황에서 32Bit 운영체제는 long long (8 Byte) 하나 읽자고 3번 접근해야 함
    
    따라서 char(1Byte)뒤에 3Byte 패딩을 해줘서 long long을 읽을때는 2번만 접근할 수 있도록 padding 해줌
    
    하지만 자료형이 차지하는 크기는 운영체제마다 다르므로 padding이 목적과 다르게 되는 경우가 있으므로 #pragma pack(크기)이나 직접 구조체에 dummy를 추가하는 방식으로 구현
    
    • char(1Byte), long long(8Byte) 가 있는 struct (9Byte)가 존재
    • 32Bit(4Byte) 운영체제는 해당 구조체에서 long long을 읽기위해 3번의 접근이 필요함
    • char의 1Byte + long long의 3Byte / long long의 4Byte / long long의 1Byte
    • 64Bit(8Byte) 운영체제는 2번
    • char 1Byte + long long 7Byte / long long의 1Byte

 

반응형

댓글