변수 v의 크기는 12 바이트이지만 크기는 6 비트이므로 왜 4 바이트가되지 않습니까?총 프로그램 크기가 6 비트인데 반해 다음 프로그램의 출력이 12 바이트로 나오는 이유는 무엇입니까?
#include <iostream>
using namespace std;
struct abc {
int c : 4;
char x : 1;
int y : 1;
} v;
int main()
{
cout << sizeof v; // it prints 12 . why?
}
모든 것이 올바르게 메모리에 정렬되도록하려면 struct에 메모리가 채워져 있어야합니다. 컴파일러가 4 바이트 경계에서 스트라이드를 설정하는 것처럼 보입니다. 각각 4 바이트를 차지하는 int가 2 개 있습니다 (int32이지만 명시 적으로 정의되어 있지 않습니다. 컴파일러가이를 해결합니다). 마지막으로 char는 1 바이트를 차지하여 9 바이트로 나타납니다. 메모리는 홀수로 해결할 수 없습니다. 각 주소는 짝수 간격으로 시작해야하므로 3 바이트로 채워 지므로 4 + 4 + 4 = 12 – Alex
으로 볼 수 있습니다. http://en.cppreference.com/w/ cpp/language/bit_field –