C++ Dynamischer Speicher: Stack vs. Heap erklärt
Oft unbekannt, wie viel Speicher nötig ist – Größe erst zur Laufzeit bestimmbar. Generische Syntax für Allokation kann fehlschlagen (Heap erschöpft). Gute Praxis: NULL-Check: Speicher freigeben mit Ausgabe: Array von 20 chars: Löschen: Mehrdimensionales Array: Freigabe: Objekte wie einfache Datentypen. Beispiel: Array von Objekten: Konstruktor 4x aufgerufen, Destruktor 4x beim
new & delete Operatoren
new:new datentyp;datentyp: beliebiger Built-in-Typ, Array oder benutzerdefinierter Typ (Klasse/Struct).Beispiel: Built-in Typ
double* pvalue = nullptr;
pvalue = new double; // Speicher anforderndouble* pvalue = nullptr;
if(!(pvalue = new double)) {
cout << "Error: out of memory." << endl;
exit(1);
}malloc() (C) existiert noch, aber new bevorzugen – Vorteil: konstruiert Objekte (Kernzweck von C++).delete:delete pvalue; // Speicher freigebenKomplettbeispiel
#include <iostream>
using namespace std;
int main() {
double* pvalue = nullptr;
pvalue = new double;
*pvalue = 29494.99;
cout << "Value of pvalue: " << *pvalue << endl;
delete pvalue;
return 0;
}Value of pvalue: 29495Dynamische Allokation für Arrays
char* pvalue = nullptr;
pvalue = new char[20];delete[] pvalue; (eckige Klammern nötig!)double** pvalue = nullptr;
pvalue = new double[3][4]; // 3x4 Arraydelete[] pvalue; (Syntax gleich).Dynamische Allokation für Objekte
#include <iostream>
using namespace std;
class Box {
public:
Box() { cout << "Constructor called!" << endl; }
~Box() { cout << "Destructor called!" << endl; }
};
int main() {
Box* myBoxArray = new Box[4];
delete[] myBoxArray;
return 0;
}delete[].Constructor called!
Constructor called!
Constructor called!
Constructor called!
Destructor called!
Destructor called!
Destructor called!
Destructor called!
C Sprache
- C++-Datentypen verstehen: Grundlagen, Modifizierer und Best Practices
- C++-Operatoren meistern: Ein vollständiger Leitfaden mit praktischen Beispielen
- C++-Kommentare: Best Practices für lesbaren, wartbaren Code
- Dynamische Speicherverwaltung in C: calloc, malloc und free erklärt
- C++ Programmiersprache: Überblick & Kernfeatures
- C++ Konstanten & Literale: Typen, Syntax & Best Practices
- C++ Operatoren: Typen, Nutzung & Best Practices
- C++ Numerische Typen: Praktischer Leitfaden
- C++ Referenzen: Konzepte & Unterschiede zu Pointern
- C++ Dynamischer Speicher: Stack vs. Heap erklärt