0

オブジェクトのセットを動的に割り当てたい(数百になる可能性があります)。これらのオブジェクトの一部はテキスト フィールドです。std::string は優れた文字列操作を提供するため、std:string型のオブジェクト メンバー パラメータを使用することをお勧めします。

ただし、std::string は動的にサイズ変更可能なオブジェクトです。私にとって、これは std::string を含む動的に割り当てられたオブジェクトに反します: std::string が計画よりも大きくなると、割り当てられたメモリのオーバーフローが発生する可能性があります。

  • 動的に割り当てられたオブジェクトのパラメーターとして std::string が適しているかどうか、アドバイスをお願いできますか?
  • どのように std::string を操作するので、メモリ オーバーフローが発生しませんか?
  • 何百ものオブジェクトが動的に割り当てられる場合でも、std::string はメンバ パラメータとして適していますか?
4

1 に答える 1

1

あなたの質問は解析するのが少し難しく、サンプル コードを使用すると簡単に解析できると思います。次のように、文字列を含むクラスがあると仮定するのは正しいですか。

class foo {
  public:
    std::string str;
};

文字列のサイズがどのように変更されるのだろうか?説明してみましょう: クラス foo のオブジェクトのサイズは固定されています。文字列メンバーのサイズも固定されていますが、その実装には、文字列の内容に応じて拡大または縮小する追加の動的メモリ (他の場所) へのポインターが含まれています。std::string の実装がこれを処理します。心配する必要はありません。メモリ オーバーフローも発生しません。たとえば、文字列のメモリは、foo オブジェクトによって使用されるブロックとは異なるメモリ ブロックです。

于 2011-02-16T08:31:03.907 に答える