The documentation says:

Important Note: When passing a char* to a C function, and the C function keeps it around for any reason, make sure that you keep a reference to it in your D code. Otherwise, it may become invalid during a garbage collection cycle and cause a nasty bug when the C code tries to use it.

(from https://dlang.org/library/std/string/to_stringz.html)

consider a C function with this prototype:
void foo(const char *baa);

Does it means I should do:

string s = ...;
auto cstring = s.toStringz;
foo(cstring);

rather just:

foo(s.toStringz);

?

Reply via email to