<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Nov 1, 2016, at 11:55 AM, Manfred Schubert via swift-users &lt;<a href="mailto:swift-users@swift.org" class="">swift-users@swift.org</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="">The "UnsafeRawPointer Migration" guide talks about "binding memory to a type“ as if that was a well known term. I have never heard of it yet though, and googling it returns no relevant results. I do not understand what binding memory is supposed to do.<br class=""><br class="">The migration guide says "Binding uninitialized memory to a type prepares the memory to store values of that type“, but clearly raw memory does not need to be prepared (and cannot be) to hold any arbitrary type and value.<br class=""><br class="">So what is this for, what does it actually do, and to whom is it done (the raw pointer, or the typed pointer which is returned, or the raw memory)?<br class=""><br class=""></div></div></blockquote><div><br class=""></div><div>This is more so a semantic distinction rather than some kind of physical operation. The memory is not altered, but all reads and writes to that memory location have to be through the “bound type”. If it’s “bound” to some type T, you must only read and write through values of type T, and not some unrelated type. This is in order to honor Swift's memory model while still exposing access to raw memory (see [1]), and to do so one must be careful about how they treat that memory so as to not violate “strict aliasing” (see [2]). This is similar to the notion of strict aliasing in C (see [3]).&nbsp;</div><div><br class=""></div><div>[1]&nbsp;<a href="https://github.com/apple/swift-evolution/blob/master/proposals/0107-unsaferawpointer.md#memory-model-explanation" class="">https://github.com/apple/swift-evolution/blob/master/proposals/0107-unsaferawpointer.md#memory-model-explanation</a></div><div>[2]&nbsp;<a href="https://github.com/apple/swift-evolution/blob/master/proposals/0107-unsaferawpointer.md#strict-aliasing" class="">https://github.com/apple/swift-evolution/blob/master/proposals/0107-unsaferawpointer.md#strict-aliasing</a></div><div>[3]&nbsp;<a href="http://blog.regehr.org/archives/1307" class="">http://blog.regehr.org/archives/1307</a></div><div><br class=""></div><br class=""><blockquote type="cite" class=""><div class=""><div class=""><br class="">Manfred<br class="">_______________________________________________<br class="">swift-users mailing list<br class=""><a href="mailto:swift-users@swift.org" class="">swift-users@swift.org</a><br class="">https://lists.swift.org/mailman/listinfo/swift-users<br class=""></div></div></blockquote></div><br class=""></body></html>