diff --git a/rute.cpp b/rute.cpp
index 14b0f669177ec6e8ba7d4fb949c14ec73da87373..8647da21321fde3f6815de6ae2739ebb44501ce5 100644
--- a/rute.cpp
+++ b/rute.cpp
@@ -89,6 +89,15 @@ Rute::Rute(ifstream & inn) {
     }
 }
 
+/**
+ * Sletter alt minne allokert ifm. Rute-listen
+ */
+Rute::~Rute() {
+    for (auto it = stoppene.begin(); it != stoppene.end(); it++)
+        delete (*it); // Sletter det tilpekte
+    stoppene.clear(); // Tømmer listen for pekere
+}
+
 /**
  * Sjekker om et sluttsted ifm. smetting av stopper er før på ruten
  * enn startstedet i intervallet for hvor stopper skal smettes
@@ -974,6 +983,15 @@ void Rute::smettStopp() {
             cout << '\n';
             skrivRute(Fram); // skriver oppdatert rute forlengs
         }
+    } else { // Ikke lagt til stopp på ruten pga sent uthopp:
+        delete fStopp; // Sletter evt. allokert minne:
+        delete aStopp;
+        delete nStopp;
+        delete tempStopp;
+        delete fStoppested;
+        delete aStoppested;
+        delete nStoppested;
+        delete tempStoppested;
     }
 }
 
diff --git a/rute.h b/rute.h
index 6e8f0d0b8a8ef9b69502c8996c853d602e375a6a..b609e47732beff7bf65bc6ca0b6a9debc8ae59a6 100644
--- a/rute.h
+++ b/rute.h
@@ -35,6 +35,7 @@ class Rute {
     public:
         Rute();
         Rute(std::ifstream & inn);
+        ~Rute();
         bool erForst(Stopp* s1, Stopp* s2);
         bool erListeGyldig();
         bool erNabo(Stopp* s1, Stopp* s2);
diff --git a/ruter.cpp b/ruter.cpp
index 964d44417280e0e45d526c214cd9df8bcc2392a4..fbdefdf2759dec7e43f151d4d08e1357e71ccd33 100644
--- a/ruter.cpp
+++ b/ruter.cpp
@@ -18,6 +18,14 @@ using namespace std;
 
 extern Stoppesteder gStoppestederBase; // Henter inn globalt objekt
 
+/**
+ * Sletter allokert minne i Ruter-mappet
+ */
+Ruter::~Ruter() {
+    for (auto it = rutene.begin(); it != rutene.end(); it++)
+        delete it->second; // Sletter det tilpekte
+    rutene.clear(); // Tømmer mappet for pekere
+}
 
 /**
  * Sjekker om et gitt ruteNr finnes i datastrukturen
@@ -156,8 +164,10 @@ void Ruter::nyRute() {
                 rutene[ruteNr] = nyRute; // Lagrer ruten
                 cout << "\nNy rute er lagt til:\n";
                 ruteBeskrivelse(ruteNr); // Skriver ut ruten
-            } else 
+            } else {
                 nyRute->slettData(); // <1 stopp, sletter ruten
+                delete nyRute; // Sletter peker, ved ugyldig rute
+            }
 
         } else // Rutenummer er duplikat:
             cout << "\nRutenummeret finnes fra før. Kan ikke legge til rute.\n\n";
diff --git a/ruter.h b/ruter.h
index 744747db7e23b9734799ed5888294e6a0478aef7..ab4a8d23f197fe54901f2fafff3a6c00b4342102 100644
--- a/ruter.h
+++ b/ruter.h
@@ -17,6 +17,7 @@ class Ruter {
     private:
         std::map <int, Rute*> rutene;
     public:
+        ~Ruter();
         bool ruteNrFinnes(const int ruteNr);
         void endreRute();
         void handling();
diff --git a/stoppested.cpp b/stoppested.cpp
index 8f36ae473630acae8b3d24dfe8877a11770ce65b..e10825ca91e9556019c28380953e414b64e49ed4 100644
--- a/stoppested.cpp
+++ b/stoppested.cpp
@@ -52,6 +52,14 @@ Stoppested::Stoppested(const std::string nvn, ifstream & inn) {
         inn.ignore(); // Forkaster enter hvis det finnes naboer
 }
 
+/**
+ * Tømmer et stoppesteds vektorer for innhold
+ */
+Stoppested::~Stoppested() {
+    nabostopper.clear(); // Tømmer vektor med nabostopp nummere
+    tidtilnabo.clear(); // Tømmer vektor med tid til de ulike naboene
+}
+
 /**
  * Sjekker om et Stoppested har en gitt nabo
  * 
diff --git a/stoppested.h b/stoppested.h
index 360b0cd127d7e47055f91d8305e4e435285c3fb5..c3f394cc26643ed6a552e1b8b94dbd980cb076c4 100644
--- a/stoppested.h
+++ b/stoppested.h
@@ -24,6 +24,7 @@ class Stoppested {
     public:
         Stoppested(const std::string nvn);
         Stoppested(const std::string nvn, std::ifstream & inn);
+        ~Stoppested();
         bool finnesNabo(const int nr);
         int hentNaboIndeks(const int nr);
         int hentNaboTid(const int nr);
diff --git a/stoppesteder.cpp b/stoppesteder.cpp
index 5585a51374a487f489eb8baa578d905e6b0e1f5f..7587911e0b2a17bd4c2d715c533aad2733c55018 100644
--- a/stoppesteder.cpp
+++ b/stoppesteder.cpp
@@ -15,6 +15,15 @@
 #include "stoppesteder.h"
 using namespace std;
 
+/**
+ * Sletter minne allokert med Stoppesteder
+ */
+Stoppesteder::~Stoppesteder() {
+    for (int i = 0; i < stopper.size(); i++)
+        delete stopper[i]; // Sletter det tilpekte
+    stopper.clear(); // Tømmer vektor for pekere
+}
+
 /**
  * Sjekker om en stoppesteds indeks finnes i vektoren
  *
diff --git a/stoppesteder.h b/stoppesteder.h
index e7b1ac27d1893db4ae7c7da81a89f26fc9fbbdc8..d462067bcf8fb59aa920368cf79b70e44827ae2b 100644
--- a/stoppesteder.h
+++ b/stoppesteder.h
@@ -19,6 +19,7 @@ class Stoppesteder {
     private:
         std::vector <Stoppested*> stopper;
     public:
+        ~Stoppesteder();
         bool finnesIndeks(const int nr);
         bool ikkeHarTall(const std::string nvn);
         bool tom();