auto, var, raii,scope, banana
Chad J
gamerChad at _spamIsBad_gmail.com
Wed Aug 2 15:16:46 PDT 2006
Bruno Medeiros wrote:
> Chad J wrote:
>
>> Regan Heath wrote:
>>
>>> Add the new RAII syntax and not only does it not crash, but it
>>> behaves just like a C++ program would with A being destroyed at the
>>> end of scope.
>>
>>
>> I hear that such syntax, in C++, means that 'A' will be stack allocated,
>> which AFAIK does not imply RAII. One example I can think of that would
>> break RAII is if the function gets inlined, then the stack allocated
>> object may not be deleted until some point outside of the scope's end.
>> It will /probably/ be deleted at the end of the function that the
>> enclosing function was inlined into. I could be wrong about that though.
>>
>
> Uh, scopes and stack "frames" do not exist only for function frames.
> They exist for any instruction-block/scope. Such that:
>
> void func() {
> auto Foo fooa = new Foo;
> {
> auto Foo foob = new Foo;
> } // foob gets destroyed here
> ...
> } // fooa gets destroyed here
>
> So similarly, function inlining creates a scope/instruction-block , so
> that allocation behavior is preserved. So this code:
>
> int a = 2, b = 3;
> int r = sum(a, b);
>
> gets inlined to this:
>
> int a = 2, b = 3;
> int r;
> {
> r = a + b;
> } // De-alloc autos if there were any.
>
>
Ah. Thanks for the info.
More information about the Digitalmars-d
mailing list