diff --git a/alib2/src/alphabet/SymbolFromStringParser.cpp b/alib2/src/alphabet/SymbolFromStringParser.cpp
index 718b472f8239fb539e34a652ed594b66abadd19a..cf1cd464dab1d11efee2b10b8e87edbad1ceae1f 100644
--- a/alib2/src/alphabet/SymbolFromStringParser.cpp
+++ b/alib2/src/alphabet/SymbolFromStringParser.cpp
@@ -16,9 +16,11 @@ Symbol* SymbolFromStringParser::parse() {
 		return new Symbol(BlankSymbol());
 	case SymbolFromStringLexer::TokenType::ERROR: {
 		label::Label* label = m_LabelParser.parse();
-		if(label != NULL)
-			return new Symbol(LabeledSymbol(*label));
-		else
+		if(label != NULL) {
+			Symbol* res = new Symbol(LabeledSymbol(std::move(*label)));
+			delete label;
+			return res;
+		} else
 			return NULL;
 	}
 	case SymbolFromStringLexer::TokenType::TEOF:
@@ -36,6 +38,7 @@ Symbol SymbolFromStringParser::parseSymbol() {
 		delete symbol;
 		return std::move(res);
 	} else {
+		delete symbol;
 		throw alib::AlibException();
 	}
 }
diff --git a/alib2/src/label/LabelFromStringParser.cpp b/alib2/src/label/LabelFromStringParser.cpp
index 4d69086ffe380f1f89e3161e648afb7d7e0dacf2..d172aef6bcd7511c43bbaca41c36289866df8e23 100644
--- a/alib2/src/label/LabelFromStringParser.cpp
+++ b/alib2/src/label/LabelFromStringParser.cpp
@@ -35,6 +35,7 @@ Label LabelFromStringParser::parseLabel() {
 		delete label;
 		return std::move(res);
 	} else {
+		delete label;
 		throw alib::AlibException();
 	}
 }
diff --git a/alib2/src/regexp/RegExpFromStringParser.cpp b/alib2/src/regexp/RegExpFromStringParser.cpp
index a3fefdd1aa77caa585ae7dddf3af482d4ae7eebc..296bfb5a432106f066e2826b4d6ff41beb4a9d50 100644
--- a/alib2/src/regexp/RegExpFromStringParser.cpp
+++ b/alib2/src/regexp/RegExpFromStringParser.cpp
@@ -29,6 +29,7 @@ RegExp RegExpFromStringParser::parseRegexp() {
 		delete regexp;
 		return std::move(res);
 	} else {
+		delete regexp;
 		throw alib::AlibException();
 	}
 }
@@ -144,9 +145,11 @@ RegExpElement* RegExpFromStringParser::factor() {
 		return this->star(new RegExpEmpty());
 	} else if(token.type == RegExpFromStringLexer::TokenType::ERROR) {
 		alphabet::Symbol* symbol = m_SymbolParser.parse();
-		if(symbol != NULL)
-			return this->star(new RegExpSymbol(*symbol));
-		else
+		if(symbol != NULL) {
+			RegExpSymbol* res = new RegExpSymbol(std::move(*symbol));
+			delete symbol;
+			return this->star(res);
+		} else
 			return NULL;
 	} else {
 		return NULL;
diff --git a/alib2/src/string/StringFromStringParser.cpp b/alib2/src/string/StringFromStringParser.cpp
index b7393a82649db73b4a137b6f92483304c7750996..d93d79e0e84a2815a84392f789f275d2b09e696d 100644
--- a/alib2/src/string/StringFromStringParser.cpp
+++ b/alib2/src/string/StringFromStringParser.cpp
@@ -47,6 +47,7 @@ String StringFromStringParser::parseString() {
 		delete string;
 		return std::move(res);
 	} else {
+		delete string;
 		throw alib::AlibException();
 	}
 }
@@ -58,7 +59,8 @@ std::vector<alphabet::Symbol> StringFromStringParser::parseContent() {
 		symbol = m_SymbolParser.parse();
 		if(symbol == NULL)
 			return data;
-		data.push_back(*symbol);
+		data.push_back(std::move(*symbol));
+		delete symbol;
 	} while(true);
 }