AddressLayout — 주소 레이아웃
AddressLayout — 주소 레이아웃
AddressLayout는 메모리 영역의 주소를 모델링하는 데 사용되는 값 레이아웃(value layout)입니다. 주소 레이아웃과 연관된 캐리어(carrier)는 MemorySegment.class입니다.
본문
주소 레이아웃의 크기와 정렬은 플랫폼에 따라 다릅니다(예: 64비트 플랫폼에서는 주소 레이아웃의 크기와 정렬이 8바이트로 설정됩니다). 주소 레이아웃은 선택적으로 대상 레이아웃(target layout)을 가질 수 있습니다.
대상 레이아웃 T를 가진 주소 레이아웃은 레이아웃이 T인 메모리 영역의 주소를 모델링하는 데 사용할 수 있습니다. 예를 들어 대상 레이아웃이 ValueLayout.JAVA_INT인 주소 레이아웃은 4바이트 길이의 메모리 영역 주소를 모델링할 수 있습니다.
public sealed interface AddressLayout extends ValueLayout
대상 레이아웃을 지정하면 다음 상황에서 유용합니다.
- 다른 메모리 세그먼트에서 주소를 읽어 얻은 메모리 세그먼트에 접근할 때(예:
MemorySegment.getAtIndex(AddressLayout, long)) Linker.downcallHandle(FunctionDescriptor, Option...)로 다운콜 메서드 핸들을 만들 때Linker.upcallStub(MethodHandle, FunctionDescriptor, Arena, Option...)로 업콜 스텁을 만들 때
주요 메서드
AddressLayout withName(String name)
AddressLayout withoutName()
AddressLayout withByteAlignment(long byteAlignment)
AddressLayout withOrder(ByteOrder order)
AddressLayout withTargetLayout(MemoryLayout layout)
AddressLayout withoutTargetLayout()
Optional<MemoryLayout> targetLayout()
withTargetLayout/withoutTargetLayout은 대상 레이아웃을 설정하거나 제거합니다.targetLayout()은 현재 대상 레이아웃을 반환합니다.