diff --git a/configure.in b/configure.in
index 4b1053f08f37b5caabe111a2073cf47a24e81176..8da7005d6d29d9beaa70ae7d4d063fade25143ac 100644
--- a/configure.in
+++ b/configure.in
@@ -250,6 +250,19 @@ if test $debug_usb_comms = yes; then
 fi
 
 
+debug_malloc=no
+AC_ARG_ENABLE(malloc_logging,
+	AS_HELP_STRING([--enable-malloc-logging],
+  		[Include free space in logging messages (requires malloc.h).]), 
+	[debug_malloc=$enableval], [])
+
+AC_MSG_CHECKING([whether to enable malloc free space logging]);
+AC_MSG_RESULT($debug_malloc)
+if test $debug_malloc = yes; then
+  AC_DEFINE([_DEBUG_FREE_SPACE_],[1], [Include malloc free space in logging])
+fi
+
+
 AC_ARG_ENABLE(parport,
   AS_HELP_STRING([--enable-parport], [Enable building the pc parallel port driver]), 
   [build_parport=$enableval], [build_parport=no])
diff --git a/src/helper/log.c b/src/helper/log.c
index c603c7e18cc5e3d9dab5113cc8122cb2ee259318..b6bb3479ab44bb70e90f76e03a9da4eafd482030 100644
--- a/src/helper/log.c
+++ b/src/helper/log.c
@@ -41,9 +41,12 @@
 #include <unistd.h>
 #include <stdarg.h>
 
-#define PRINT_MEM() 0
-#if PRINT_MEM()
+#ifdef _DEBUG_FREE_SPACE_
+#ifdef HAVE_MALLOC_H
 #include <malloc.h>
+#else
+#error "malloc.h is required to use --enable-malloc-logging"
+#endif
 #endif
 
 int debug_level = -1;
@@ -99,16 +102,16 @@ static void log_puts(enum log_levels level, const char *file, int line, const ch
 		{
 			/* print with count and time information */
 			int t=(int)(timeval_ms()-start);
-#if PRINT_MEM()
+#ifdef _DEBUG_FREE_SPACE_
 			struct mallinfo info;
 			info = mallinfo();
 #endif
 			fprintf(log_output, "%s%d %d %s:%d %s()"
-#if PRINT_MEM()
+#ifdef _DEBUG_FREE_SPACE_
 					" %d"
 #endif
 					": %s", log_strings[level+1], count, t, file, line, function,
-#if PRINT_MEM()
+#ifdef _DEBUG_FREE_SPACE_
 					info.fordblks,
 #endif
 					string);