[Mono-list] Embeding Mono. Memory management

Alexander Smirnov smsrecv at ya.ru
Fri Nov 20 09:07:50 EST 2009


yes, I know that t frees them, when no other managed reference is pointing. 

But right after I create a string using: MonoString* str=mono_string_new (domain, "some text"); 
no managed references point to this string because MonoString* str is not a manged reference. 
So can GC delete "str" right after mono_string_new? 

thanks for your help

20.11.09, 14:56, "Robert Jordan" <robertj at gmx.net>:

> Alexander Smirnov wrote:
>  > But how GC knows when to free such objects? When it frees such objects?
>  
>  It frees them, when no other managed reference is pointing
>  to them.
>  
>  > Could GC free the object when I still need it? 
>  > for example
>  > 
>  > void func() {
>  >   MonoString* str=mono_string_new (domain, "some text");
>  >   /*
>  >    could GC free str before "using str", if no, why?
>  >   */
>  >   // using str
>  > }
>  
>  
>  If you want to use "str" after func () in unwound, then
>  you have to obtain a gchandle for "str". See Mono's
>  mono_gchandle_* functions.
>  
>  Robert
>  
>  _______________________________________________
>  Mono-list maillist  -  Mono-list at lists.ximian.com
>  http://lists.ximian.com/mailman/listinfo/mono-list
>  
>  

-- 
Alexander Smirnov

Яндекс.Почта. Письма есть. Спама - нет. http://mail.yandex.ru/nospam/sign


More information about the Mono-list mailing list