diff --git a/RTCP/Interface/include/Interface/CN_Configuration.h b/RTCP/Interface/include/Interface/CN_Configuration.h
index 7c03de081229cf0dc85542848c385f16ea7b1ce6..0d642e287664197f84916644747ef1cd91a9d1d0 100644
--- a/RTCP/Interface/include/Interface/CN_Configuration.h
+++ b/RTCP/Interface/include/Interface/CN_Configuration.h
@@ -29,6 +29,7 @@
 #include <Interface/PencilCoordinates.h>
 #include <Interface/Parset.h>
 
+#include <cstring>
 #include <vector>
 #include <string>
 
@@ -38,7 +39,7 @@ namespace RTCP {
 class CN_Configuration
 {
   public:
-    CN_Configuration() {}
+    CN_Configuration();
 
 #if !defined HAVE_BGP_CN
     CN_Configuration(const Parset &parset);
diff --git a/RTCP/Interface/include/Interface/SubbandMetaData.h b/RTCP/Interface/include/Interface/SubbandMetaData.h
index 6db7266d7eba5300f7916ed42ddb10a9ba34ebda..ded982d45c90cc3734513937df8b3421b485a2a4 100644
--- a/RTCP/Interface/include/Interface/SubbandMetaData.h
+++ b/RTCP/Interface/include/Interface/SubbandMetaData.h
@@ -30,6 +30,7 @@
 #include <Common/LofarLogger.h>
 
 #include <cassert>
+#include <cstring>
 
 
 namespace LOFAR {
@@ -105,6 +106,9 @@ inline SubbandMetaData::SubbandMetaData(unsigned nrSubbands, unsigned nrBeams, s
   itsMarshallData(static_cast<char*>(allocator.allocate(itsMarshallDataSize, alignment))),
   itsAllocator(allocator)
 {
+#if defined HAVE_VALGRIND
+  memset(itsMarshallData, 0, itsMarshallDataSize);
+#endif
 }
 
 inline SubbandMetaData::~SubbandMetaData()
diff --git a/RTCP/Interface/src/CN_Configuration.cc b/RTCP/Interface/src/CN_Configuration.cc
index 46773bea40b1fe5a732b41f68900741fa1df2b23..bdcc64292fbff6d5541de10b68ee9d43a2117551 100644
--- a/RTCP/Interface/src/CN_Configuration.cc
+++ b/RTCP/Interface/src/CN_Configuration.cc
@@ -23,14 +23,28 @@
 #include <Interface/CN_Configuration.h>
 
 #include <cassert>
+#include <cstring>
 
 namespace LOFAR {
 namespace RTCP {
 
+
+CN_Configuration::CN_Configuration()
+{
+#if defined HAVE_VALGRIND
+  memset(&itsMarshalledData, 0, sizeof itsMarshalledData);
+#endif
+}
+
+
 #if ! defined HAVE_BGP_CN
 
 CN_Configuration::CN_Configuration(const Parset &parset)
 {
+#if defined HAVE_VALGRIND
+  memset(&itsMarshalledData, 0, sizeof itsMarshalledData);
+#endif
+
   nrStations()              = parset.nrStations();
   nrBitsPerSample()	    = parset.nrBitsPerSample();
   nrSubbands()              = parset.nrSubbands();
diff --git a/RTCP/Interface/src/CN_Mode.cc b/RTCP/Interface/src/CN_Mode.cc
index 0c35ec8a86491cdac4541c77008d4f0a017d7ff3..9e200e15c7ab4f44dfc535181feba8fc4caf3842 100644
--- a/RTCP/Interface/src/CN_Mode.cc
+++ b/RTCP/Interface/src/CN_Mode.cc
@@ -2,6 +2,9 @@
 
 #include <Interface/CN_Mode.h>
 
+#include <cstring>
+
+
 namespace LOFAR {
 namespace RTCP {
 
@@ -23,6 +26,10 @@ unsigned CN_Mode::nrModes()
 
 CN_Mode::CN_Mode()
 {
+#if defined HAVE_VALGRIND
+  memset(&itsMarshalledData, 0, sizeof itsMarshalledData);
+#endif
+
   itsMarshalledData.mode = INVALID;
 }
 
@@ -33,6 +40,10 @@ CN_Mode::CN_Mode(const Parset &ps)
 {
   string name = ps.getModeName();
 
+#if defined HAVE_VALGRIND
+  memset(&itsMarshalledData, 0, sizeof itsMarshalledData);
+#endif
+
   itsMarshalledData.mode = INVALID;
 
   for (unsigned i = 0; i < nrModes(); i ++) {