瀏覽代碼

Fixed memory leak

MattClarkson 13 年之前
父節點
當前提交
63aa33c9d3
共有 2 個文件被更改,包括 23 次插入3 次删除
  1. 15 3
      Libs/Core/ctkDependencyGraph.cpp
  2. 8 0
      Utilities/DGraph/DGraph.cpp

+ 15 - 3
Libs/Core/ctkDependencyGraph.cpp

@@ -44,6 +44,7 @@ public:
   ctkDependencyGraph* const q_ptr;
 
   ctkDependencyGraphPrivate(ctkDependencyGraph& p);
+  ~ctkDependencyGraphPrivate();
   
   /// Compute outdegree
   void computeOutdegrees(std::vector<int>& computedOutdegrees);
@@ -167,6 +168,18 @@ ctkDependencyGraphPrivate::ctkDependencyGraphPrivate(ctkDependencyGraph& object)
   this->CycleEnd = 0;
 }
 
+ctkDependencyGraphPrivate::~ctkDependencyGraphPrivate()
+{
+  std::vector<std::vector<int>* >::iterator edgesIterator;
+  for (edgesIterator = this->Edges.begin(); edgesIterator != this->Edges.end(); edgesIterator++)
+    {
+    if (*edgesIterator != NULL)
+      {
+      delete *edgesIterator;
+      }
+    }
+}
+
 //----------------------------------------------------------------------------
 void ctkDependencyGraphPrivate::computeOutdegrees(std::vector<int>& computedOutdegrees)
 {
@@ -436,10 +449,9 @@ ctkDependencyGraph::ctkDependencyGraph(int nvertices)
 //----------------------------------------------------------------------------
 ctkDependencyGraph::~ctkDependencyGraph()
 {
-  // Clean memory
-  for (int i=0; i <= d_ptr->NVertices; i++)
+  if (d_ptr != NULL)
     {
-    delete d_ptr->Edges[i];
+    delete d_ptr;
     }
 }
 

+ 8 - 0
Utilities/DGraph/DGraph.cpp

@@ -420,6 +420,14 @@ int main(int argc, char** argv)
             std::cout << ";";
             }
           }
+
+        for (pathsIterator = paths.begin(); pathsIterator != paths.end(); pathsIterator++)
+          {
+            if (*pathsIterator != NULL)
+              {
+              delete *pathsIterator;
+              }
+          }
         }
       }
     }