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