AddressLayout — 주소 레이아웃

AddressLayout — 주소 레이아웃

AddressLayout는 메모리 영역의 주소를 모델링하는 데 사용되는 값 레이아웃(value layout)입니다. 주소 레이아웃과 연관된 캐리어(carrier)는 MemorySegment.class입니다.

출처: Java API Reference

본문

주소 레이아웃의 크기와 정렬은 플랫폼에 따라 다릅니다(예: 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()은 현재 대상 레이아웃을 반환합니다.

더 알아보기 (Learn more)