수색…
소개
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