Исходя из фона C#, у меня есть только самая неопределенная идея по управлению памятью на C++ - все, что я знаю, это то, что мне придется освобождать память вручную. В результате мой код на C++ написан таким образом, что объекты типа std::vector
, std::list
, std::map
свободно создаются, используются, но не освобождаются.Свободная память, занимаемая Std List, Vector, 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;
}
Мой вопрос, я должен освободить каждый. single.one Использование списка (в приведенном выше примере это означает, что мне нужно было бы освободить pt2DMap
, vectorList
и faceList2D
)? Это было бы очень утомительно! Я мог бы просто переписать мой класс Computation
, чтобы он был менее подвержен утечке памяти.
Любая идея, как исправить это?
На самом деле лучше использовать ссылки в параметрах метода. Копирование неэффективно. – ssmir
@ssmir, старые привычки в C# умереть! – Graviton