From 131520e1ef8e304e9d70cb5f1b78d021f90dfeaa Mon Sep 17 00:00:00 2001 From: Leonetienne Date: Wed, 2 Jun 2021 17:14:53 +0200 Subject: [PATCH] Fixed memory leaks --- Hazelnupp.vpp | Bin 708608 -> 708608 bytes Hazelnupp/FloatValue.h | 1 + Hazelnupp/Hazelnupp.cpp | 26 ++++++++++++---- Hazelnupp/Hazelnupp.h | 5 ++- Hazelnupp/IntValue.h | 1 + Hazelnupp/ListValue.cpp | 1 - Hazelnupp/ListValue.h | 2 +- Hazelnupp/Parameter.cpp | 8 +++++ Hazelnupp/Parameter.h | 1 + Hazelnupp/StringTools.cpp | 14 ++++----- Hazelnupp/StringTools.h | 14 ++++----- Hazelnupp/StringValue.h | 1 + Hazelnupp/Value.h | 2 ++ Hazelnupp/VoidValue.h | 1 + Hazelnupp/main.cpp | 63 +++++++++++++++++++------------------- 15 files changed, 84 insertions(+), 56 deletions(-) diff --git a/Hazelnupp.vpp b/Hazelnupp.vpp index fc6b34f70f15fe003813dae43ad6d33664f74d2a..6a76eddb9cc015839b7badf0fe2df9bbbfcaaf56 100644 GIT binary patch delta 7082 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 diff --git a/Hazelnupp/FloatValue.h b/Hazelnupp/FloatValue.h index 9d1173f..c9b71c9 100644 --- a/Hazelnupp/FloatValue.h +++ b/Hazelnupp/FloatValue.h @@ -6,6 +6,7 @@ class FloatValue : public Value { public: FloatValue(const long double& value); + ~FloatValue() override {}; //! Will return a deeopopy of this object Value* Deepcopy() const override; diff --git a/Hazelnupp/Hazelnupp.cpp b/Hazelnupp/Hazelnupp.cpp index 5997042..cbd41f3 100644 --- a/Hazelnupp/Hazelnupp.cpp +++ b/Hazelnupp/Hazelnupp.cpp @@ -5,7 +5,6 @@ #include "StringValue.h" #include "ListValue.h" #include "StringTools.h" -#include Hazelnupp::Hazelnupp() { @@ -18,6 +17,16 @@ Hazelnupp::Hazelnupp(const int argc, const char* const* argv) return; } +Hazelnupp::~Hazelnupp() +{ + for (auto& it : parameters) + delete it.second; + + parameters.clear(); + + return; +} + void Hazelnupp::Parse(const int argc, const char* const* argv) { // Populate raw arguments @@ -42,8 +51,6 @@ void Hazelnupp::Parse(const int argc, const char* const* argv) i++; } - std::cout << "Terminated." << std::endl; - return; } @@ -64,17 +71,24 @@ std::size_t Hazelnupp::ParseNextParameter(const std::size_t parIndex, Parameter* } Value* parsedVal = ParseValue(values); - out_Par = new Parameter(key, parsedVal); + if (parsedVal != nullptr) + { + out_Par = new Parameter(key, parsedVal); - delete parsedVal; - parsedVal = nullptr; + delete parsedVal; + parsedVal = nullptr; + } + else + throw std::runtime_error("Unable to parse parameter!"); return i; } void Hazelnupp::PopulateRawArgs(const int argc, const char* const* argv) { + rawArgs.clear(); rawArgs.reserve(argc); + for (int i = 0; i < argc; i++) rawArgs.emplace_back(std::string(argv[i])); diff --git a/Hazelnupp/Hazelnupp.h b/Hazelnupp/Hazelnupp.h index 1522954..cf1fcdf 100644 --- a/Hazelnupp/Hazelnupp.h +++ b/Hazelnupp/Hazelnupp.h @@ -9,6 +9,8 @@ public: Hazelnupp(); Hazelnupp(const int argc, const char* const* argv); + ~Hazelnupp(); + //! Will parse command line arguments void Parse(const int argc, const char* const* argv); @@ -51,7 +53,4 @@ private: std::unordered_map abbreviations; std::vector rawArgs; - - // EvaluateValues - friend class ListValue; }; diff --git a/Hazelnupp/IntValue.h b/Hazelnupp/IntValue.h index 1e2554f..0e4042c 100644 --- a/Hazelnupp/IntValue.h +++ b/Hazelnupp/IntValue.h @@ -5,6 +5,7 @@ class IntValue : public Value { public: IntValue(const long long int& value); + ~IntValue() override {}; //! Will return a deeopopy of this object Value* Deepcopy() const override; diff --git a/Hazelnupp/ListValue.cpp b/Hazelnupp/ListValue.cpp index 82cfff9..0935fe9 100644 --- a/Hazelnupp/ListValue.cpp +++ b/Hazelnupp/ListValue.cpp @@ -1,5 +1,4 @@ #include "ListValue.h" -#include "Hazelnupp.h" #include ListValue::ListValue() : diff --git a/Hazelnupp/ListValue.h b/Hazelnupp/ListValue.h index 7aad97a..206162e 100644 --- a/Hazelnupp/ListValue.h +++ b/Hazelnupp/ListValue.h @@ -6,7 +6,7 @@ class ListValue : public Value { public: ListValue(); - ~ListValue(); + ~ListValue() override; //! Will return a deeopopy of this object Value* Deepcopy() const override; diff --git a/Hazelnupp/Parameter.cpp b/Hazelnupp/Parameter.cpp index 49477d0..8e92548 100644 --- a/Hazelnupp/Parameter.cpp +++ b/Hazelnupp/Parameter.cpp @@ -8,6 +8,14 @@ Parameter::Parameter(const std::string& key, const ::Value* value) return; } +Parameter::~Parameter() +{ + delete value; + value = nullptr; + + return; +} + const std::string& Parameter::Key() const { return key; diff --git a/Hazelnupp/Parameter.h b/Hazelnupp/Parameter.h index 2ff9674..066a9c6 100644 --- a/Hazelnupp/Parameter.h +++ b/Hazelnupp/Parameter.h @@ -7,6 +7,7 @@ class Parameter { public: explicit Parameter(const std::string& key, const Value* value); + ~Parameter(); //! Will return the key of this parameter const std::string& Key() const; diff --git a/Hazelnupp/StringTools.cpp b/Hazelnupp/StringTools.cpp index 67b71fc..f0e9071 100644 --- a/Hazelnupp/StringTools.cpp +++ b/Hazelnupp/StringTools.cpp @@ -9,7 +9,7 @@ bool StringTools::Contains(const std::string& str, const char c) return false; } -std::string StringTools::Replace(const std::string str, const char find, const std::string subst) +std::string StringTools::Replace(const std::string& str, const char find, const std::string& subst) { std::stringstream ss; @@ -22,7 +22,7 @@ std::string StringTools::Replace(const std::string str, const char find, const s return ss.str(); } -std::string StringTools::Replace(const std::string str, const std::string find, const std::string subst) +std::string StringTools::Replace(const std::string& str, const std::string& find, const std::string& subst) { if (find.length() == 0) return str; @@ -51,7 +51,7 @@ std::string StringTools::Replace(const std::string str, const std::string find, } -bool StringTools::IsNumeric(const std::string str, const bool allowDecimalPoint) +bool StringTools::IsNumeric(const std::string& str, const bool allowDecimalPoint) { if (str.length() == 0) return false; @@ -77,7 +77,7 @@ bool StringTools::IsNumeric(const std::string str, const bool allowDecimalPoint) return digitCount > 0; } -bool StringTools::ParseNumber(const std::string str, bool& out_isInt, long double& out_number) +bool StringTools::ParseNumber(const std::string& str, bool& out_isInt, long double& out_number) { bool isNormalNum = true; @@ -124,14 +124,14 @@ bool StringTools::ParseNumber(const std::string str, bool& out_isInt, long doubl return true; } -std::vector StringTools::SplitString(const std::string str, const char delimiter) +std::vector StringTools::SplitString(const std::string& str, const char delimiter) { if (str.length() == 0) return std::vector(); return SplitString(str, delimiter); } -std::vector StringTools::SplitString(const std::string str, const std::string delimiter) +std::vector StringTools::SplitString(const std::string& str, const std::string& delimiter) { if (str.length() == 0) return std::vector(); @@ -172,7 +172,7 @@ std::vector StringTools::SplitString(const std::string str, const s return parts; } -std::string StringTools::ToLower(const std::string str) +std::string StringTools::ToLower(const std::string& str) { std::stringstream ss; for (std::size_t i = 0; i < str.length(); i++) diff --git a/Hazelnupp/StringTools.h b/Hazelnupp/StringTools.h index 365a4fc..4e984f5 100644 --- a/Hazelnupp/StringTools.h +++ b/Hazelnupp/StringTools.h @@ -14,25 +14,25 @@ public: static bool Contains(const std::string& str, const char c); //! Will replace a part of a string with another string - static std::string Replace(const std::string str, const char find, const std::string subst); + static std::string Replace(const std::string& str, const char find, const std::string& subst); //! Will replace a part of a string with another string - static std::string Replace(const std::string str, const std::string find, const std::string subst); + static std::string Replace(const std::string& str, const std::string& find, const std::string& subst); //! Will return true if the given string consists only of digits (including signage) - static bool IsNumeric(const std::string str, const bool allowDecimalPoint = false); + static bool IsNumeric(const std::string& str, const bool allowDecimalPoint = false); //! Will convert the number in str to a number. //! Returns wether or not the operation was successful. //! Also returns wether the number is an integer, or floating point. If int, cast out_number to int. - static bool ParseNumber(const std::string str, bool& out_isInt, long double& out_number); + static bool ParseNumber(const std::string& str, bool& out_isInt, long double& out_number); //! Will split a string by a delimiter char. The delimiter will be excluded! - static std::vector SplitString(const std::string str, const char delimiter); + static std::vector SplitString(const std::string& str, const char delimiter); //! Will split a string by a delimiter string. The delimiter will be excluded! - static std::vector SplitString(const std::string str, const std::string delimiter); + static std::vector SplitString(const std::string& str, const std::string& delimiter); //! Will make a string all lower-case - static std::string ToLower(const std::string str); + static std::string ToLower(const std::string& str); }; diff --git a/Hazelnupp/StringValue.h b/Hazelnupp/StringValue.h index dd0b797..aa6aca1 100644 --- a/Hazelnupp/StringValue.h +++ b/Hazelnupp/StringValue.h @@ -6,6 +6,7 @@ class StringValue : public Value { public: StringValue(const std::string& value); + ~StringValue() override {}; //! Will return a deeopopy of this object Value* Deepcopy() const override; diff --git a/Hazelnupp/Value.h b/Hazelnupp/Value.h index 72afff1..65cb082 100644 --- a/Hazelnupp/Value.h +++ b/Hazelnupp/Value.h @@ -6,6 +6,8 @@ class Value { public: + virtual ~Value() {}; + //! Will return a deeopopy of this object virtual Value* Deepcopy() const = 0; diff --git a/Hazelnupp/VoidValue.h b/Hazelnupp/VoidValue.h index 210e7f3..bdba9ab 100644 --- a/Hazelnupp/VoidValue.h +++ b/Hazelnupp/VoidValue.h @@ -5,6 +5,7 @@ class VoidValue : public Value { public: VoidValue(); + ~VoidValue() override {}; //! Will return a deeopopy of this object Value* Deepcopy() const override; diff --git a/Hazelnupp/main.cpp b/Hazelnupp/main.cpp index f44e452..f5cff2c 100644 --- a/Hazelnupp/main.cpp +++ b/Hazelnupp/main.cpp @@ -1,42 +1,43 @@ #include -#include #include "Hazelnupp.h" #include "IntValue.h" int main(int argc, char** argv) { - std::string arg0 = "meinpfad"; - std::string arg1 = "-w"; - std::string arg2 = "6669"; - std::string arg3 = "--alfred"; - std::string arg4 = "banane7"; - - std::array testArgv = { - arg0.data(), - arg1.data(), - arg2.data(), - arg3.data(), - arg4.data() - }; - - Hazelnupp args; - - args.RegisterAbbreviation("-w", "--word"); - - //args.Parse(testArgv.size(), testArgv.data()); - args.Parse(argc, argv); - - if (args.HasParam("--word")) + while (1) { - int i = args["--word"]->GetInt32(); - std::cout << i << std::endl; - } - else - { - std::cout << "No --word!" << std::endl; - } + std::vector testArgv = { + "meinpfad", + "-w", + "hallo", + "--alfred", + "apfel", + "banane", + "triangle", + "--numbers", + "1", + "2", + "3", + "4", + "5", + }; - //std::cout << args.GetExecutableName() << std::endl; + Hazelnupp args; + + args.RegisterAbbreviation("-w", "--word"); + + args.Parse(testArgv.size(), testArgv.data()); + //args.Parse(argc, argv); + + if (args.HasParam("--word")) + { + std::cout << *args["--word"] << std::endl; + } + else + { + std::cout << "No --word!" << std::endl; + } + } return 0; }