Pointer-Problem
-
Tut mir Leid, wenn diese Frage vielleicht schon anderswo gestellt wurde, aber ich bin ein wenig in Eile. Ich habe eine lokale Variable double *alpha, die auf ein double-array zeigt.
void alphaEinfuegen(double *alpha, double zahl, int anzahl){
double *tmp = new double[anzahl];
if(anzahl == 1){
alpha[0] = zahl;
}else{
for(int i = 0; i < (anzahl - 1); i++){
tmp[i] = alpha[i];
}
tmp[anzahl - 1] = zahl;
delete [] alpha;
alpha = tmp;
}
}zahl und anzahl sollen nur per Value übergeben werden, aber mit alpha bekomme ich bei delete Probleme. Weiß jemand, wie das richtig heißen müsste?
-
Du übergibst den Zeiger selbst auch byValue, dadurch bleibt der äußere Zeiger unverändert. Beispiel:
void zeigr( char* a) { char* b = new char[10]; sprintf(b, "Welt"); delete[] a; a = b; } int main() { char* a = new char[10]; sprintf(a, "Hallo"); zeigr(a); delete [] a; }Führt garantiert zum Absturz.
Du muß entwerder den Zeiger per Referenz übergeben oder als Rückgabewert der Funktion benutzen.
-
Ah, vielen Dank. Das mit dem Pointer-Pointer hat funktioniert.
