Skip to content

Instantly share code, notes, and snippets.

@kirsteins
Last active June 16, 2024 09:42
Show Gist options
  • Save kirsteins/6d6e96380db677169831 to your computer and use it in GitHub Desktop.
Save kirsteins/6d6e96380db677169831 to your computer and use it in GitHub Desktop.
Array -> UnsafeMutablePointer -> Array
var initalArray = [1, 2, 3]
let pointer: UnsafeMutablePointer<Int> = UnsafeMutablePointer(initalArray)
let arrary = Array(UnsafeBufferPointer(start: pointer, count: initalArray.count))
@NazgulLee
Copy link

Hi, according to Apple's document:

The pointer created through implicit bridging of an instance or of an array’s elements is only valid during the execution of the called function. Escaping the pointer to use after the execution of the function is undefined behavior. In particular, do not use implicit bridging when calling an UnsafeMutablePointer initializer.

so, using pointer from

// Swift 3.0 Line 2
let pointer: UnsafeMutablePointer = UnsafeMutablePointer(mutating: initalArray)

is undefined.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment