수색…


소개

GNU C 컴파일러는 C 표준에 명시되지 않은 멋진 기능을 제공합니다. 이러한 확장은 시스템 소프트웨어에서 많이 사용되며 성능 최적화를위한 훌륭한 도구입니다.

패킹 된 특성

packed 는 메모리 요구 사항을 최소화하기 위해 구조체 및 공용체와 함께 사용되는 변수 속성입니다.

#include <stdio.h>
struct foo {
    int a;
    char c;
};

struct __attribute__((__packed__))foo_packed {
    int a;
    char c;
};

int main()
{
    printf("Size of foo: %d\n", sizeof(struct foo));
    printf("Size of packed foo: %d\n", sizeof(struct foo_packed));
    return 0;
}

제 64 비트 리눅스에서,

  • struct foo의 크기 = 8 바이트
  • struct foo_packed의 크기 = 5 바이트

packed 특성은 컴파일러에서 메모리 정렬을 유지하기 위해 수행하는 구조체 패딩 을 억제합니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow