2014-02-26 3 views
5

http://msdn.microsoft.com/en-us/library/ms684122(VS.85).aspx 링크에서 "올바르게 정렬 된 32 비트 변수에 대한 단순 읽기 및 쓰기"는 원자 연산입니다. C++ 프로그램에서 모든 32 비트 변수가 기본적으로 올바르게 정렬되어 있는지 궁금합니다. 다르게 말해서 32 비트 변수가 제대로 정렬되지 않은 경우가 있습니다.32 비트 변수를 올바르게 정렬 할 수없는 경우가 있습니까

답변

1

그렇지 않으면 컴파일러에 지시하지 않으면 32 비트 변수가 올바르게 정렬됩니다.

수 (char 배열을 생성하고 배열 홀수 지수에 지능을 써서 예) 비 정렬 된 주소에 32 비트 변수를 배치 기록 번호.

컴파일러 #pragma를 사용하여 이 아닌에 특정 유형이나 변수를 정렬 할 수 있습니다.

하지만 아무 것도하지 않으면 변수가 올바르게 정렬됩니다.

3
#pragma pack(1) 
struct _not_aligned { 
    uint8_t a; 
    uint32_t b; // unaligned 32-bit 
}; 
#pragma pack()