断片化についての別の質問からこれを借りましたが、私はそれを気にしません。機能が全くわからないのではないかと心配です。タイプとデータの有効期間の観点から:(
同じデータは、std :: vector(内部メタデータを持つ動的aray型)、その中の文字列データへのポインター(returnパラメーター)、および宣言された戻り型(std:string)によって表されます。
質問:std :: vectorが破棄される場合、データはどのようにして関数から安全に取り出されますか?暗黙的にコピーされていますか?ベクトル内のcharの動的配列は、ベクトルから「切り離され」、std :: string型として返されるため、一括コピーは必要ありませんか?時々、C++とstdライブラリが私を取得しようとしていると思います...
私はしばらくの間C++を使用していますが、このようなものは私の'edinです。
std::string TestFragmentation()
{
std::vector<char> buffer(500);
SomeCApiFunction( &buffer[0], buffer.size() ); // Sets buffer to null-terminated string data
return &buffer[0];
}