QScopedPointer类存储指向动态分配对象的指针,并在销毁该对象时将其删除。
手动管理分配给堆的对象非常困难且容易出错,其常见的结果是代码会泄漏内存并且难以维护。 QScopedPointer是一个小型实用程序类,它通过将基于堆栈的内存所有权分配给堆分配来大大简化此过程,通常将其称为资源获取即初始化(RAII)。
QScopedPointer保证当当前作用域消失时,指向的对象将被删除。
考虑执行堆分配并具有各种退出点的此函数:
void myFunction(bool useSubClass)
{
MyClass *p = useSubClass ? new MyClass() : new MySubClass;
QIODevice *device = handsOverOwnership