gpt4 book ai didi

c++ - qt,这是使用 deleteLater 的安全方法吗?

转载 作者:行者123 更新时间:2023-11-28 02:36:34 25 4
gpt4 key购买 nike

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 的内容。

关于c++ - qt,这是使用 deleteLater 的安全方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27225226/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com