예, 은입니다. http://msdn.microsoft.com/en-us/library/83ythb65.aspx 하지만 나에게 명확하지 않습니다. 무엇보다도 먼저 __declspec(align(#))
은 구조체에서 선언 된 모든 객체가 정렬 된 오프셋에서 시작하도록합니다. 그 부분은 분명합니다. 또한 객체가 들어있는 구조체에 의해 '상속'됩니다. 그러나 객체의 크기는 변경되지 않습니다. 그렇습니까?`__declspec (align (#))`은 어떻게 작동합니까?
__declspec(align(32)) struct aType {int a; int b;};
sizeof(aType);
반환 32
: 정확하게, 왜이 코드에서 sizeof()
합니까?
실제로 ** 구조체/객체의 크기가 ** 변경됩니까? – NPS
예,'struct'는 이제 32 바이트입니다. 2 개의 정수의 경우 8 바이트, 그 중 24 바이트는 "필러"로 배열의 첫 번째와 두 번째 aType 객체 사이의 공백을 채 웁니다. –
자, 그럼 왜 여기에 :'struct aType {int a; int b;}; typedef __declspec (align (32)) struct aType bType; '정렬 만 변경하고 크기는 변경하지 않습니다 ([MSDN] (http://msdn.microsoft.com/pl-pl/library/83ythb65.aspx) __declspec (align (#)) ")을 사용하여 새 유형 정의? – NPS