I stand corrected !

Thank you Abderrahim for this detailed explanation.

Serge.



On Tue, Jun 21, 2011 at 8:56 PM, Abderrahim Kitouni <a.kito...@gmail.com>wrote:

> Hello,
>
> على 21 يون, 2011 م 07:18, كتب Serge Hulne:
>
>  Apparently
>>
>>   string a = "hello";
>>   string * b = a;
>>
>> and :
>>
>>    string a = "hello";
>>    unowned string  b = a;
>>
>> appear to be translated by Vala into the exact same C code.
>>
>> Are these two ways to declare the same thing or is this just a bug which
>> happens to work perchance ?
>>
>
> Not exactly the same thing, but the difference is relatively subtle:
> unowned means that the variable doesn't "own" the reference, that is, it
> doesn't need to be freed when the variable goes out of scope; a pointer,
> however, means that vala doesn't do the memory management at all, it's the
> *programmer's* responsibility to free the reference (or not) before the
> variable goes out of scope (using the delete statement).
>
> For example, with
>        unowned string b = a.dup ();
> the compiler will report an error, while with
>        string* b = a.dup ();
> it won't, and you need to explicitly
>        delete b;
> after you're done with it.
>
> Generally, if you're optimizing your program to reduce copying, it's better
> to use an unowned reference rather than a pointer.
>
> HTH,
> Abderrahim
>
_______________________________________________
vala-list mailing list
vala-list@gnome.org
http://mail.gnome.org/mailman/listinfo/vala-list

Reply via email to