堆/堆栈-进入QGraphicsItemGroup的变量范围

|| 如果我有一个QGraphicsItem想要放入QGraphicsItemGroup中,则在循环中是这样的:
for(int i =0; i < 2; i++)
{
    for(int j = 0; j < 2; j++)
    {
        QPixmap p(imwidth, imheight);
        p.fill(Qt::gray);
        QGraphicsPixmapItem *ipi = new QGraphicsPixmapItem(p);
        group->addToGroup(ipi);
    }
}
该项目是否必须在堆上,还是我可以将其设置为一个堆栈变量,并希望它在仍在组中可见,该组在此for循环之外声明?     
已邀请:
        
addToGroup
方法使用一个指针,因此您不能不传递任何其他内容。它不复制传入的对象,仅存储该指针。 如果您给它一个指向堆栈分配对象的指针,它将早晚尝试访问可能很可能被覆盖的堆栈内存,即使它(被奇迹般地)未被覆盖,它们也会迟早崩溃。这些物件无论如何都会被销毁-因此它们在任何情况下都将无效。     
        如果将QGraphicsPixmapItem声明为堆栈变量,则它将在循环的每次迭代时被销毁。因此,将其地址用作QGraphicsItemGroup :: addToGroup方法的指针很可能会导致程序稍后出现分段错误。     

要回复问题请先登录注册