0
vector<ClassX> xVec;

if (inputFile.peek() == '$')
{
    classX classXInstance;           //<==================== local instantiation
    readFileElements(classXInstance);//<== pass by reference
    if(classXInstance.validate())
    {
       xVec.push_back(classXInstance);///<=============== added here
    }
    /// destructor of the local copy is called here
}

コア ダンプを取得し、デバッグしようとしましたが、gdb で非常に多くのジャンク メッセージが表示されました。

編集:

私のクラスは次のようになります

class ClassX
{
 public:
    ClassX() { numberOfX=0; ppXX = NULL; };
   ~ClassX();
   void validate();
   char **setX(const vector<string>& Xss);
   inline char **getX() {return ppXX;};
 private:
    int numberOfX;
    char **ppXX;
};

そして、次のようなデストラクタが含まれています

ClassX::~ClassX()
{
    if (ppXX != NULL)
    {
        for(int i=0; i < numberOfXX; i++)
        {
            if (ppXX[i] != NULL)
            {
                delete [] ppXX[i];
                ppXX[i] = NULL;
            }
        }

        // Free array of pointers.
        delete [] ppXX;
        ppXX = NULL;
    }
}

setX は必要なすべてのメモリを割り当てます

ppXX[i] の出力結果を検証し、要素数が文字列ベクトルのサイズと一致する場合は true を返します

4

1 に答える 1