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