]> Creatis software - clitk.git/blobdiff - common/clitkMemoryUsage.cxx
Remove clitkAffineRegistrationLib compilation when CLTK_USE_REGISTRATION is OFF
[clitk.git] / common / clitkMemoryUsage.cxx
index c95c2859b925e7f7dfa24575e4b53d28d88f53b6..9cc75d0acce73059b2aba6a083059624e9af66d4 100644 (file)
@@ -1,7 +1,7 @@
 /*=========================================================================
   Program:   vv                     http://www.creatis.insa-lyon.fr/rio/vv
 
-  Authors belong to: 
+  Authors belong to:
   - University of LYON              http://www.universite-lyon.fr/
   - Léon Bérard cancer center       http://www.centreleonberard.fr
   - CREATIS CNRS laboratory         http://www.creatis.insa-lyon.fr
@@ -23,7 +23,7 @@
 #  include <unistd.h>
 #endif
 
-void clitk::PrintMemory(bool verbose, std::string s) 
+void clitk::PrintMemory(bool verbose, std::string s)
 {
 #if CLITK_MEMORY_INFO == 1
   if (verbose) {
@@ -38,21 +38,30 @@ void clitk::PrintMemory(bool verbose, std::string s)
 #endif
   }
 
-double clitk::GetMemoryUsageInMb() 
+double clitk::GetMemoryUsageInMb()
 {
 #if CLITK_MEMORY_INFO == 1
   //sleep(1); // wait to refresh memory ? need to let the system refresh the mem
-  int * entries = new int;
-  sg_process_stats * stat = new sg_process_stats;
-  int i=0; 
-  stat = sg_get_process_stats(entries);
+  size_t entries;
+  sg_process_stats *stat;
+  int i=0;
+  sg_init(1);
+
+  stat = sg_get_process_stats(&entries);
+  if(stat == NULL)
+    return 0.0;
+
   // Search the current pid in the list of processes
-  while (stat[i].pid != getpid()) i++;
-  // Display total memory size 
-  double mem = stat[i].proc_resident/1000/1000; // in MB
+  while (stat->pid != getpid() && i < entries)
+  {
+    ++i;
+    ++stat;
+  }
+
+  // Display total memory size
+  double mem = stat->proc_resident/1000/1000; // in MB
   return mem;
 #else
   return 0.0;
 #endif
   }
-