[英]qt, is this the safe way to use deleteLater?
Qt说在事件循环返回后调用deleteLater。 因此,如果我有以下代码:
Waypoint* wp = new Waypoint();
WaypointWidget* wp_widget = new WaypointWidget(wp);
...
delete wp;
wp_widget->deleteLater();
...
Waypoint* wp2 = new Waypoint();
WaypointWidget* wp_widget2 = new WaypointWidget(wp2);
WaypointWidget的构造函数为:
WaypointWidget(Waypoint* wp){
_wp = wp;//_wp is declared as private variable inside WaypointWidget.h
}
我担心的是,在某些情况下, wp2将使用与wp相同的地址,并且当deleteLater()导致wp_widget最终被删除时,对应的_wp将被删除。 并且因为它具有与wp2相同的地址。 wp2将被删除/受影响。
您为wp_widget而不是wp
调用deleteLater
,因此将不会设置相同的地址。 如果您尝试在WaypointWidget
析构函数中访问_wp
,则可能出现错误。
我建议您阅读有关RAII的信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.