나는이 내 코드에서 다음 태그 조합 : 나는 64 비트 리눅스에서 컴파일 또는 OS의 X cell_t
의 크기는 항상, GCC 또는 연타를 사용하여 https://github.com/EarlGray/SECD/blob/f2e364f84d194aea5cef9257630bf931e9f88cab/secd.h#L217중복 크기
32 바이트 (예상대로 4 * sizeof(long)
).
-m32
스위치를 사용하여 Linux (Ubuntu 14.04, gcc 4.8)에서 컴파일 할 때 크기는 예상대로 16 바이트입니다.
-m32
으로 gcc (4.9) 또는 clang (Apple 6.0)을 사용하여 OS X (10.9.5)에서 동일한 코드를 컴파일 할 때 크기는 20 바이트입니다. 나는 프로그램을 디버그하고 다섯 번째 단어를 사용할지도 모르는 조합이 있는지 알아보기 위해 아무 것도 찾지 못했습니다. 최적화 수준 및 디버그 정보 존재 여부에 의존하지 않습니다.
sizeof(cell_t)
이 20 바이트 인 이유는 무엇입니까? OS의 X에
어떻게 구조체가 구조체에 배치 되었습니까? –
@DavidHeffernan :'type'에 첫 번째 바이트를 사용하고,'nref'에 3 바이트를 사용하며, union은 예상대로 12 바이트를 사용합니다. 마지막 4 바이트는 0입니다 (내가 무엇을 놓치지 않았다면 본 것으로부터). –
당신은 제로가 아닌 패딩을 의미합니다. –