我真的很想弄清楚如何在没有任何额外的 malloc 或 memcpy 的情况下将堆分配的 char* 的“所有权”传递给 std::string 实例。有谁知道如何以这种方式构建字符串。理想情况下,它会是这样的:
const char* buffer = someCMethodThatReturnsAString();
try {
string strBuffer(PlacementAllocator(buffer));
} catch (...) {
free(buffer);
}
但没有实际复制缓冲区。相反,我希望缓冲区成为字符串的属性,并在字符串对象被删除(即超出范围)时成为 free()。
这是标准库中的分配器可以支持的东西,还是我需要自己构建一个分配器?