Last active
June 16, 2024 09:42
-
-
Save kirsteins/6d6e96380db677169831 to your computer and use it in GitHub Desktop.
Array -> UnsafeMutablePointer -> Array
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var initalArray = [1, 2, 3] | |
let pointer: UnsafeMutablePointer<Int> = UnsafeMutablePointer(initalArray) | |
let arrary = Array(UnsafeBufferPointer(start: pointer, count: initalArray.count)) |
@capnslipp It work because a "Float" or "Int" array is also a ContiguousArray
Some me memory of this array is stored continuously
For more detail please see Apple Documentation
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
Shouldn't this be:
let pointer: UnsafeMutablePointer< Int > = UnsafeMutablePointer(&initalArray)
with the '&'