0

私の質問は、メモリ リークを防ぐために、メイン クラスと QSharedData の継承されたクラスで明示的にデストラクタを宣言する必要があるかどうかに関するものです。この例では、EmployeeData を介してデータを処理する Employee クラスがあります。

だから私は宣言する必要がありますか

~EmployeeData(){}

~Employee()

従業員がスコープ外になったときに、メモリリークを防ぐか、明示的なデストラクタがなくてもすべてのリソースの割り当てを解除する QSharedData 自体によって処理されますか?

ここに実装されている例があります:

class EmployeeData : public QSharedData
{
public:
   EmployeeData() {}
  ~EmployeeData(){}
  // Some data here
   EmployeeInfo *info=nullptr;
};

Employee::Employee()
{
   data = new EmployeeData();
   data->info = new EmployeeInfo();
}

Employee::~Employee()
{
   if(data)
   {
     delete data->info;
   }
delete data;
}

前もって感謝します

4

0 に答える 0