mallocやmemcpyを追加せずに、ヒープに割り当てられたchar *の「所有権」をstd::stringインスタンスに渡す方法を本当に知りたいです。このような方法で文字列を作成する方法を知っている人はいますか? 理想的には、次のようになります。
const char* buffer = someCMethodThatReturnsAString();
try {
string strBuffer(PlacementAllocator(buffer));
} catch (...) {
free(buffer);
}
ただし、実際にバッファをコピーすることはありません。代わりに、バッファが文字列のプロパティになり、文字列オブジェクトが削除されたとき (つまり、範囲外になったとき) に free() になるようにします。
これは、標準ライブラリのアロケーターがサポートできるものですか、それとも自分でアロケーターを構築する必要がありますか?