C++ 如何在没有错误的情况下删除方法中的指针?

C++ 如何在没有错误的情况下删除方法中的指针?,c++,C++,下面是我班上的方法: void StartProgram() { int q = 0; cout << "\nEnter figures quantity\n"; cin >> q; Figure* Temp; for (int i = 0; i < q; i++) { Temp = new Figure; Temp->CreateFigure(255, 3); c

下面是我班上的方法:

void StartProgram()
{
    int q = 0;
    cout << "\nEnter figures quantity\n";
    cin >> q;
    Figure* Temp;
    for (int i = 0; i < q; i++)
    {
        Temp = new Figure;
        Temp->CreateFigure(255, 3);
        compose.insert(compose.end(), Temp);
        delete Temp;
    }
}
void StartProgram()
{
int q=0;
cout>q;
图*温度;
对于(int i=0;iCreateFigure(255,3);
插入(compose.end(),Temp);
删除临时文件;
}
}
此方法通过类“Figure”的对象填充向量“compose”。对于这个任务,我使用一个临时指针变量。当我试图删除这个临时变量时,为了避免内存泄漏,一切都会出错。没有这个删除-程序运行良好。我知道,也许这个问题很愚蠢,但我真的不知道在这种情况下该怎么办,因为我认为,不释放内存就离开这个方法是不可能的

这是一个错误窗口:

如果您必须使用指针(例如,您确实有一个多态对象向量),请使用unique\u ptr:

using std::unique_ptr<Figure> figure_p;
std::vector<figure_p> compose;
...
void StartProgram()
{
    int q = 0;
    cout << "\nEnter figures quantity\n";
    cin >> q;
    for (int i = 0; i < q; i++)
    {
        figure_p Temp(new Figure);
        Temp->CreateFigure(255, 3);
        compose.insert(compose.end(), std::move<figure_p>(Temp));
    }
}
使用std::unique\u ptr figure\u p;
std::矢量合成;
...
void StartProgram()
{
int q=0;
cout>q;
对于(int i=0;iCreateFigure(255,3);
插入(compose.end(),std::move(Temp));
}
}

如果不需要多态对象数组,只需将Figure类型的对象放入向量。

那么,
组成什么。insert
做什么?另外,为什么要使用
new
创建对象<代码>数字温度;组合。推回(临时)似乎安全多了。请注意,Windows上的
delete
有时会导致与原始错误相差很远的错误。你调试代码了吗?因为他可能。有一个指针向量是的,我有一个指向对象的指针向量。因此,我使用默认函数“insert”来填充这个向量。没有指针,程序就有麻烦。我认为在这里使用指针是权宜之计。