diff --git a/src/Agilent4uhv.cpp b/src/Agilent4uhv.cpp
index f2e9c77ab54e5668a6469198728eb664076d9b5e..9cc7a4283a5f0e3689b54ecf6a16188277dfbe2f 100644
--- a/src/Agilent4uhv.cpp
+++ b/src/Agilent4uhv.cpp
@@ -188,9 +188,21 @@ void Agilent4uhv::delete_device()
 
 	//	Delete device allocated objects
 	if (attr_Model_read[0])
-		delete attr_Model_read[0];
+		delete[] attr_Model_read[0];
 	if (attr_SerialNumber_read[0])
-		delete attr_SerialNumber_read[0];
+		delete[] attr_SerialNumber_read[0];
+
+	for (size_t i=0; i<channels.size(); ++i) {
+		string attr_status_name = "Status" + channels[i];
+		Tango::DevString *att_value = get_StatusX_data_ptr(attr_status_name);
+		if (*att_value)
+			delete[] *att_value;
+	}
+
+	for (size_t i=0; i<channels.size(); ++i) {
+		remove_OnHVX_dynamic_command("OnHV" + channels[i]);
+		remove_OffHVX_dynamic_command("OffHV" + channels[i]);
+	}
 
 	/*----- PROTECTED REGION END -----*/	//	Agilent4uhv::delete_device
 	delete[] attr_Model_read;