Am 01.11.2016 um 21:40 schrieb Andrew Trick <atr...@apple.com>: > > I’m not sure I like the “prepares the memory” language myself. Binding memory > communicates to the compiler that the memory locations are safe for typed > access. Nothing happens at runtime--until someone writes a type safety > sanitizer.
So nothing happens at runtime, and also nothing appears to happen at compile time. If I try this code: > var rawPtr = UnsafeMutableRawPointer.allocate(bytes: 2, alignedTo: 0) > > var widePtr = rawPtr.bindMemory(to: Int16.self, capacity: 1) > > widePtr.pointee = 32 > > var narrowPtr = rawPtr.bindMemory(to: UInt8.self, capacity: 2) > > narrowPtr[0] = 16 > narrowPtr[1] = 255 > > print(widePtr.pointee) This compiles and runs as expected, but it should not be allowed if I understand things correctly. So shouldn’t it be a compile time error or crash at runtime? If not, what do I get over how it was before where I was casting to a typed pointer? > It affects the abstract state of the memory location, independent of the > pointer variable used to access that memory. Binding memory returns a typed > pointer for convenience and clarity, but there’s nothing special about that > particular pointer value. If it were not returning a typed pointer, what would it actually do? Manfred _______________________________________________ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users