c++多次内存分配给同一个指针

c++ multiple times memory allocation to the same pointer

本文关键字:同一个 指针 分配 内存 c++      更新时间:2023-10-16

我正在处理一段代码,我不能100%确定它的正确性。你能告诉我你怎么看吗?(我在Qt编码)

仅为示例:

CustomWidget *widget; //defined as private
widget = new CustomWidget(this);
connect(widget,SIGNAL(onCLose(), this, SLOT(onWidgetClose()));
widget = new CustomWidget(this);
connect(widget,SIGNAL(onCLose(), this, SLOT(onWidgetClose()));
widget = new CustomWidget(this);
connect(widget,SIGNAL(onCLose(), this, SLOT(onWidgetClose()));

void onWidgetClose(){
   CustomWidget *w = findClosedWidget();
   delete w;
}

没有必要编写自己的onWidgetClosefindClosedWidget—特别是因为编写正确的findClosedWidget将非常重要。而应该使用专门用于此目的的插槽QObject::deleteLater:

CustomWidget *widget; //defined as private
widget = new CustomWidget(this);
connect(widget,SIGNAL(onCLose(), widget, SLOT(deleteLater()));
widget = new CustomWidget(this);
connect(widget,SIGNAL(onCLose(), widget, SLOT(deleteLater()));
widget = new CustomWidget(this);
connect(widget,SIGNAL(onCLose(), widget, SLOT(deleteLater()));