私はC++を初めて使用します。std::string
バッファを解放するタイミングを決定するために参照カウントを使用すると想定していました。次の例では、s
バッファはf()
戻り時に解放されます。give_ownership_of
文字列バッファの所有権を解放したくない場合はどうすればよいですか?
void f()
{
string s = read_str();
give_ownership_of(s);
}
アップデート
質問にさらに詳細を追加させてください。実際のコードは次のようになります。
string read_str();
void write_str_async(const char *str, void (*free_fn)(const char*));
void f() {
string s = read_str();
// write_str_async() need to access the buffer of s after f() returns.
// So I'm responsible to keep s alive until write_str_async() calls free_fn to release the buffer when the write is done.
// The PROBLEM here is that s will be released when the variable scope ends. NOTE: I'm not able to change either read_str() or write_str_async() here.
write_str_async(s.c_str(), my_free_fn);
}