align — std::align
align — std::align
std::align은 주어진 정렬과 크기에 맞는 메모리 위치를 찾아주는 도우미 함수예요. 버퍼 안에서 원하는 정렬 조건을 만족하는 포인터를 찾아 조정해줘요.
수동 메모리 풀이나 오버레이 버퍼에서 "어떤 정렬을 가진 N 바이트 공간"을 찾아야 할 때 유용해요. 메모리 재사용을 내가 직접 관리하는 로우 레벨 코드에서 자주 쓰여요.
출처: cppreference
본문
align은 버퍼에서 지정된 정렬과 크기를 만족하는 위치를 찾는 함수예요.
void* align(std::size_t alignment,
std::size_t size,
void*& ptr,
std::size_t& space);
alignment— 원하는 정렬 (2의 거듭제곱이어야 하며 0이 아니어야 해요)size— 정렬된 위치에 필요한 크기ptr— 가리키는 버퍼 시작. 반환 시 조정된(정렬된) 포인터로 갱신돼요.space—ptr이 가리키는 버퍼의 남은 바이트 수. 반환 시 크기size만큼 줄어들어요.
ptr이 가리키는 버퍼에서, alignment에 맞춰 정렬되고 크기 size를 담을 수 있는 첫 번째 위치를 찾아요. 가능하면 ptr을 그 주소로 조정하고 space를 줄인 뒤, 정렬된 포인터를 반환해요. 그런 위치를 찾을 수 없으면 nullptr을 반환하고 ptr과 space는 그대로예요.
이 함수는 메모리 풀에서 정렬을 보장하며 객체를 배치할 때 특히 유용해요.