作为一个有C#背景的人,我对于C++的内存管理只有模糊的概念--我只知道我必须手动释放内存。因此,我的C++代码是这样编写的:类型为std::vector
、std::list
、std::map
的对象被随意实例化、使用,但没有被释放。
直到我完成程序之前,我才意识到这一点,现在我的代码由以下几种模式组成:
struct Point_2
{
double x;
double y;
};
struct Point_3
{
double x;
double y;
double z;
};
list<list<Point_2>> Computation::ComputationJob
(list<Point_3>pts3D, vector<Point_2>vectors)
{
map<Point_2, double> pt2DMap=ConstructPointMap(pts3D);
vector<Point_2> vectorList = ConstructVectors(vectors);
list<list<Point_2>> faceList2D=ConstructPoints(vectorList , pt2DMap);
return faceList2D;
}
我的问题是,我是否必须释放列表使用的每一个单独的元素(在上面的示例中,这意味着我必须释放
pt2DMap
、vectorList
和faceList2D
)?那将非常繁琐!我可能会重写我的Computation
类,使其更不容易出现内存泄漏。有什么好的解决方法吗?