목록메모리압축 (1)
Coding Memo
[C++] pack pragma (메모리 정렬)
C++ 컴파일러는 메모리에 구조체나 클래스를 배치할 때, 반드시 빈공간 없이 빽빽하게 메모리를 사용하지 않는다. 컴파일러는 CPU의 데이터 접근 효율성 향상을 위해 특정한 값으로 정렬을 하여 메모리에 데이터를 배치시킨다. (데이터 형식에 따른 일정한 간격 유지) (예를 들어, int 타입의 데이터는 빠른 메모리 접근을 위해 4배수의 메모리 주소에 저장할 것이다. 이로 인해 이전 메모리 공간에 빈 공간 (padding)이 생길 수 있다.) 만약 위 구조체에서 b가 int 타입이 아닌 double 타입이었다면 b를 8바이트 정렬하기 위해 a이후에 패딩을 추가할 것이다. | a(2) | padding(6) | b(8) | 즉, padding은 다음 순서에 오는 멤버의 데이터의 형식에 따라 존재여부와 사이즈가 ..
Language/C++
2024. 3. 5. 14:12