Rvalue references - The resolution
Michel Fortin
michel.fortin at michelf.ca
Sun May 5 04:43:35 PDT 2013
On 2013-05-04 18:33:10 +0000, Walter Bright <newshound2 at digitalmars.com> said:
> Runtime Detection
>
> There are still a few cases that the compiler cannot statically detect.
> For these a runtime check is inserted, which compares the returned ref
> pointer to see if it lies within the stack frame of the exiting
> function, and if it does, halts the program. The cost will be a couple
> of CMP instructions and an LEA. These checks would be omitted if the
> -noboundscheck compiler switch was provided.
I just want to note that this has the effect of making any kind of heap
allocation not done by the GC unsafe. For instance, if you have a
container struct that allocates using malloc/realloc and that container
gives access to its elements by reference then you're screwed (it can't
be detected).
The obvious answer is to not make @trusted the function returning a
reference or a slice to malloced memory. But I remember Andrei wanting
to make standard containers of this sort at one point, so I think it's
important to note this limitation.
--
Michel Fortin
michel.fortin at michelf.ca
http://michelf.ca/
More information about the Digitalmars-d
mailing list