2017-10-08 10 views
1

나는 문자 그대로 수십억 개의 인스턴스를 생성 할 클래스가 있습니다. 나는 가능한 한 작은 데이터를 넣기 위해 최선을 다했으며, x64 아키텍처 용으로 컴파일 할 때 10 바이트 (unsigned short intsize_t)라고했습니다. 그러나 sizeof(myclass) (VS) 이상의 마우스를 16 바이트보고합니다. 두 필드 중 하나를 주석으로 처리하면 클래스의 크기는 각각 10 바이트와 2 바이트입니다.최소 공간을 사용하여 C++ 클래스를 강제로 컴파일 할 수 있습니까?

내 클래스에는 10 바이트 만 사용하도록 컴파일러에 지시하는 방법이 있습니까?

+1

Try'#pragma pack' – PaulMcKenzie

+0

고마워요! 답안에'#pragma pack (2)'을 던지면 가장 좋은 답으로 표시하겠습니다. – dfoverdx

+0

@dfoverdx는 2 대신에'pack (1)'을 사용합니다 –

답변

0

#pragma pack은 구조를 더 작게 만들 수 있습니다. 반면에 바이트 정렬이 보장되지 않기 때문에 멤버 데이터 검색 속도가 느려질 수 있습니다. 결과적으로 컴파일러는 다른 메모리 위치에서 데이터를 가져 오는 추가 명령어가 필요합니다. 자세한 내용을 보려면 다음 링크를 참조하십시오. #pragma pack effect