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”来填充这个向量。没有指针,程序就有麻烦。我认为在这里使用指针是权宜之计。