returning D string from C++?
    bitwise via Digitalmars-d-learn 
    digitalmars-d-learn at puremagic.com
       
    Sun Aug  6 09:23:01 PDT 2017
    
    
  
On Saturday, 5 August 2017 at 21:18:29 UTC, Jeremy DeHaan wrote:
> On Saturday, 5 August 2017 at 20:17:23 UTC, bitwise wrote:
>> I have a Windows native window class in C++, and I need a 
>> function to return the window title.
>>
>> [...]
>
> As long as you have a reachable reference to the GC memory 
> SOMEWHERE, the GC won't reclaim it. It doesn't have to be on 
> the stack as long as it is reachable through the stack.
I'm basically worried about this happening:
virtual DString getTitle() const {
     DString ret;
     ret.length = GetWindowTextLength(_hwnd) + 1;
     ret.ptr = (const char*)gc_malloc(ret.length, 0xA, NULL);
----gc collection on another thread----
     GetWindowText(_hwnd, (char*)ret.ptr, ret.length); // BOOM
     return ret;
}
So I guess you're saying I'm covered then? I guess there's no 
reason I can think of for the GC to stop scanning at the language 
boundary, let alone any way to actually do that efficiently.
   Thanks
    
    
More information about the Digitalmars-d-learn
mailing list