C++ 如何避免动态分配小部件中的内存泄漏
我必须在主窗口中显示widgetA,而不将其作为主窗口的子窗口。因此,如果我动态分配内存空间,它将有泄漏内存的趋势C++ 如何避免动态分配小部件中的内存泄漏,c++,qt,qwidget,C++,Qt,Qwidget,我必须在主窗口中显示widgetA,而不将其作为主窗口的子窗口。因此,如果我动态分配内存空间,它将有泄漏内存的趋势 Widget *wid = new Widget; wid->show(); 我想知道如何处理一个控件的动态内存分配而不泄漏。QT是相当老的C++,所以很多例子只使用原始指针和手动调用到删除< /代码>,不符合RAII。这在实践中可以很好地工作,因为大多数qobject的所有权通常可以很快地转移到符合RAII的容器中,只有少数例外,而且Qt几乎不会抛出异常 但是,它确实提供
Widget *wid = new Widget;
wid->show();
我想知道如何处理一个控件的动态内存分配而不泄漏。
QT是相当老的C++,所以很多例子只使用原始指针和手动调用到<代码>删除< /代码>,不符合RAII。这在实践中可以很好地工作,因为大多数
qobject
的所有权通常可以很快地转移到符合RAII的容器中,只有少数例外,而且Qt几乎不会抛出异常
但是,它确实提供了自己的智能指针,如下所示:
。。。但是,你是否想深入QT或更接近C++标准的范围,请将<代码>主窗口< /代码>设置为父函数,打开代码> Qt::Windows 标志。这是“Qt方式”。一些额外的选项:1)在堆栈上分配2)在小部件上使用
Qt::WA_DeleteOnClose
属性
QScopedPointer<Widget> wid(new Widget);
wid->show();
// `wid` will automatically call `delete` when it goes out of scope.
unique_ptr<Widget> wid(new Widget);
wid->show();