我从另一个关于碎片的问题中借用了这个,但我对此并不感到困扰。我更担心我根本不了解该功能。在类型和数据生命周期方面:(
相同的数据由 std::vector(具有内部元数据的动态数组类型)、指向其中的字符串数据的指针(返回参数)和声明的返回类型(即 std:string)表示。
问题:当 std::vector 将被销毁时,数据如何安全地从函数中取出?它是隐式复制的吗?向量中的 char 动态数组是否与向量“分离”并作为 std::string 类型返回,因此不需要大容量复制?有时,我认为 C++ 和标准库试图让我...
我已经使用 C++ 有一段时间了,但我的 'ed in 就是这样的东西。
std::string TestFragmentation()
{
std::vector<char> buffer(500);
SomeCApiFunction( &buffer[0], buffer.size() ); // Sets buffer to null-terminated string data
return &buffer[0];
}