Am 03.11.2016 um 15:41 schrieb Rien <r...@balancingrock.nl>:
> 
> Ah, but that is not the case.
> 
> It is important to differentiate between the “gateway” to the memory and the 
> memory area itself.
> Different programming languages/compilers have different approaches, but I 
> believe that Swift allocates a struct for every gateway.
> widePtr and narrowPtr are two different gateways. They refer to different 
> struct's. But the struct for each of them refers to the same memory area.

When you have a look at the Swift memory model explanation

https://github.com/apple/swift-evolution/blob/master/proposals/0107-unsaferawpointer.md#memory-model-explanation

it looks like memory can only be bound to one type at a time. In particular in 
the third example where a pointer of type T is used to initialize memory which 
is bound to type U, it says that the behavior is undefined.

There is also withMemoryRebound(to:capacity:) which binds memory to another 
type, executes the code that accesses the memory as this type in a closure, and 
the restores the old type binding.

That makes me think that it is not allowed to have multiple „gateways“ to the 
same memory area at the same time.


Manfred
_______________________________________________
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users

Reply via email to