diff --git a/src/plugins/debugger/disassembleragent.cpp b/src/plugins/debugger/disassembleragent.cpp
index af09fc46cfaa054daecb57ab09ba646ea9c67097..4d7d88bbc6e06294432b8bfb87fc3aa406011041 100644
--- a/src/plugins/debugger/disassembleragent.cpp
+++ b/src/plugins/debugger/disassembleragent.cpp
@@ -138,6 +138,7 @@ DisassemblerAgentPrivate::~DisassemblerAgentPrivate()
     }
     editor = 0;
     delete locationMark;
+    qDeleteAll(breakpointMarks);
 }
 
 DisassemblerLines DisassemblerAgentPrivate::contentsAtCurrentLocation() const
@@ -383,6 +384,7 @@ void DisassemblerAgent::updateBreakpointMarkers()
     const DisassemblerLines contents = d->contentsAtCurrentLocation();
     foreach (TextEditor::ITextMark *marker, d->breakpointMarks)
         d->editor->markableInterface()->removeMark(marker);
+    qDeleteAll(d->breakpointMarks);
     d->breakpointMarks.clear();
     foreach (BreakpointModelId id, ids) {
         const quint64 address = handler->response(id).address;