capypad
0 Tage Serie
cpp / beginner
Snippet

Rückgabe nach Wert: Zurückgeben lokaler Kopien

Wenn eine Funktion einen Pointer auf dynamisch zugewiesenen Speicher zurückgibt, ist der Aufrufer für das Freigeben dieses Speichers mit delete[] verantwortlich. Dieses Muster ist in C++ üblich, erfordert aber sorgfältige Speicherverwaltung. Modernes C++ bevorzugt die Rückgabe von std::vector stattdessen.

snippet.cpp
cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
 
int* createArray(int size) {
int* arr = new int[size];
for (int i = 0; i < size; i++) {
arr[i] = i * 10;
}
return arr;
}
 
int main() {
int* myArray = createArray(5);
 
for (int i = 0; i < 5; i++) {
std::cout << myArray[i] << " ";
}
std::cout << std::endl;
 
delete[] myArray;
 
return 0;
}
Erklärung
1
int* createArray(int size)
Funktion gibt einen Pointer auf dynamisch zugewiesenes Array zurück
2
int* arr = new int[size];
Alloziert Array auf dem Heap mit new
3
return arr;
Gibt den Pointer zurück, Heap-Speicher bleibt nach Funktionsende bestehen
4
delete[] myArray;
Muss Heap-Speicher freigeben, um Speicherlecks zu verhindern