메모리 직접 관리

원문 출처 https://developer.apple.com/documentation/swift/swift_standard_library/manual_memory_management

주제

첫 스텝

타입이 결정된 포인터

타입이 결정된 포인터와 버퍼를 사용해서 메모리의 특정 타입 인스턴스에 접근하세요

  • struct UnsafePointer 특정 타입의 데이터에 접근하는 포인터

  • struct UnsafeMutablePointer 특정 타입의 데이터에 접근하고 조작하는 포인터

  • struct UnsafeBufferPointer A nonowning collection interface to a buffer of elements stored contiguously in memory.

  • struct UnsafeMutableBufferPointer A nonowning collection interface to a buffer of mutable elements stored contiguously in memory.

원시 포인터

raw 바이트를 저장하고 로딩하기 위해서 원시 포인터와 버퍼를 사용하세요.

  • struct UnsafeRawPointer 타입이 정해지지 않은 데이터에 접근하는 원시 포인터

  • struct UnsafeMutableRawPointer 타입이 정해지지 않은 데이터에 접근하고 조작하는 원시 포인터

  • struct UnsafeRawBufferPointer A nonowning collection interface to the bytes in a region of memory.

  • struct UnsafeMutableRawBufferPointer A mutable nonowning collection interface to the bytes in a region of memory.

메모리 접근

  • func withUnsafePointer<T, Result>(to: T, (UnsafePointer<T>) -> Result) -> Result 주어진 인자에 대한 포인터를 사용하여 클로저를 실행합니다. Beta

  • func withUnsafePointer(to: inout T, (UnsafePointer) -> Result) -> Result

    주어진 인자에 대한 포인터를 사용하여 클로저를 실행합니다.

  • func withUnsafeMutablePointer(to: inout T, (UnsafeMutablePointer) -> Result) -> Result

    주어진 인자의 Mutable 포인터를 사용하여 클로저를 실행합니다.

  • func withUnsafeBytes(of: T, (UnsafeRawBufferPointer) -> Result) -> Result

    주어진 인자의 raw byte를 커버하는 Buffer 포인터를 사용하여 클로저를 실행합니다. Beta

  • func withUnsafeBytes(of: inout T, (UnsafeRawBufferPointer) -> Result) -> Result

    주어진 인자의 raw byte를 커버하는 Buffer 포인터를 사용하여 클로저를 실행합니다.

  • func withUnsafeMutableBytes(of: inout T, (UnsafeMutableRawBufferPointer) -> Result) -> Result

    주어진 인자의 raw byte를 커버하는 Mutable buffer 포인터를 사용하여 클로저를 실행합니다.

  • func swap(inout T, inout T)

    두 인자의 값을 바꿉니다.

메모리 레이아웃

  • enum MemoryLayout The memory layout of a type, describing its size, stride, and alignment.

참조 카운팅

  • struct Unmanaged 관리되지 않는 객체 참조를 전파하기 위한 타입

  • func withExtendedLifetime(T, (T) -> Result) -> Result

    클로저가 반환되기 전에 주어진 인스턴스가 destroy 되지 않도록 보장하면서 클로저를 평가합니다.

  • func withExtendedLifetime(T, () -> Result) -> Result 클로저가 반환되기 전에 주어진 인스턴스가 destroy 되지 않도록 보장하면서 클로저를 평가합니다.

같이 보기

프로그래밍 작업

  • 입출력 값을 콘솔에 출력하고, 텍스트 스트림에 값을 쓰거나 읽고, 커맨드 라인 인자를 사용하세요.

  • 디버깅과 반영 런타임 점검을 통해 코드를 강화하고 값의 런타임 표현을 검토합니다.

  • Key-Path 표현법 Key-Path를 사용해서 프로퍼티에 동적으로 접근하세요.

  • Type Casting and Existential Types 타입간에 캐스팅을 하거나 모든 타입의 값을 나타냅니다.

  • C 상호운용성 import된 C 타입이나 C 가변함수를 사용하세요.

  • 연산자 선언 접두어, 접미어 및 중위어 연산자로 작업하세요.

Last updated