diff --git a/gprofng/examples/mxv-pthreads/src/main.c b/gprofng/examples/mxv-pthreads/src/main.c
index 625c60484d1..8596763b918 100644
--- a/gprofng/examples/mxv-pthreads/src/main.c
+++ b/gprofng/examples/mxv-pthreads/src/main.c
@@ -28,9 +28,10 @@
 
 #include "mydefs.h"
 
+bool verbose;
+
 int main (int argc, char **argv)
 {
-  bool verbose = false;
 
   thread_data *thread_data_arguments;
   pthread_t   *pthread_ids;
@@ -62,8 +63,7 @@ int main (int argc, char **argv)
 			&number_of_rows,
 			&number_of_columns,
 			&repeat_count,
-			&number_of_threads,
-			&verbose);
+			&number_of_threads);
 
   if (verbose) printf ("Verbose mode enabled\n");
 
@@ -191,11 +191,16 @@ int main (int argc, char **argv)
 * Release the allocated memory and end execution.
 * -----------------------------------------------------------------------------
 */
+  for (int64_t i=0; i<number_of_rows; i++)
+    {
+      free (A[i]);
+    }
   free (A);
   free (b);
   free (c);
   free (ref);
   free (pthread_ids);
+  free (thread_data_arguments);
 
   return (0);
 }
@@ -211,8 +216,7 @@ int get_user_options (int argc, char *argv[],
 		      int64_t *number_of_rows,
 		      int64_t *number_of_columns,
 		      int64_t *repeat_count,
-		      int64_t *number_of_threads,
-		      bool    *verbose)
+		      int64_t *number_of_threads)
 {
   int      opt;
   int      errors		     = 0;
@@ -226,7 +230,7 @@ int get_user_options (int argc, char *argv[],
   *number_of_columns = default_columns;
   *number_of_threads = default_number_of_threads;
   *repeat_count      = default_repeat_count;
-  *verbose	     = default_verbose;
+  verbose	     = default_verbose;
 
   while ((opt = getopt (argc, argv, "m:n:r:t:vh")) != -1)
     {
@@ -245,7 +249,7 @@ int get_user_options (int argc, char *argv[],
 	    *number_of_threads = atol (optarg);
 	    break;
 	  case 'v':
-	    *verbose = true;
+	    verbose = true;
 	    break;
 	  case 'h':
 	  default:
@@ -370,5 +374,7 @@ int64_t check_results (int64_t m, int64_t n, double *c, double *ref)
       printf ("  %c c[%ld] = %f ref[%ld] = %f\n",marker[i],i,c[i],i,ref[i]);
   }
 
+  free (marker);
+
   return (errors);
 }
diff --git a/gprofng/examples/mxv-pthreads/src/manage_data.c b/gprofng/examples/mxv-pthreads/src/manage_data.c
index 3f2891cda5d..9db4496b802 100644
--- a/gprofng/examples/mxv-pthreads/src/manage_data.c
+++ b/gprofng/examples/mxv-pthreads/src/manage_data.c
@@ -20,8 +20,6 @@
 
 #include "mydefs.h"
 
-bool verbose;
-
 /*
 * -----------------------------------------------------------------------------
 * This function allocates the data and sets up the data structures to be used
@@ -66,6 +64,10 @@ void allocate_data (int active_threads,
       perror ("vector ref");
       exit (-1);
     }
+  else
+    {
+      if (verbose) printf ("Vector ref allocated\n");
+    }
 
   if ((*A = (double **) malloc (number_of_rows * sizeof (double))) == NULL)
     {
diff --git a/gprofng/examples/mxv-pthreads/src/mydefs.h b/gprofng/examples/mxv-pthreads/src/mydefs.h
index eae0834cafc..1f7e00a00a5 100644
--- a/gprofng/examples/mxv-pthreads/src/mydefs.h
+++ b/gprofng/examples/mxv-pthreads/src/mydefs.h
@@ -63,8 +63,7 @@ int get_user_options (int     argc,
 		      int64_t *number_of_rows,
 		      int64_t *number_of_columns,
 		      int64_t *repeat_count,
-		      int64_t *number_of_threads,
-		      bool    *verbose);
+		      int64_t *number_of_threads);
 
 void init_data (int64_t m,
 		int64_t n,
