c++ Pointer Frage

Sascha-Thorsten
Mausschubser
Mausschubser
Beiträge: 51
Registriert: 4. Okt 2010 09:20

c++ Pointer Frage

Beitrag von Sascha-Thorsten » 26. Okt 2014 17:01

Angenommen ich hätte folgendes Stück Code:

float* foo( float a)(

static float arr[3] = {1.0f, 3.12f, a}
//do domething with arr
return arr;
}

void bar(){
float b = 42.0f
float* f = foo(b);

//do something with f
f = foo(b/2);
// do something with f

return;
}

Hier ist nun meine Frage: muss ich bevor ich f neu zuweise das alte f mit delete f löschen?

RobDangerous
Computerversteher
Computerversteher
Beiträge: 363
Registriert: 14. Okt 2014 17:05

Re: c++ Pointer Frage

Beitrag von RobDangerous » 26. Okt 2014 17:20

Nein, delete nur ganz genau dann, wenn zuvor auch new aufgerufen wurde. f zeigt hier immer auf die selbe Adresse, an der ein statisch alloziertes Stückchen Speicher liegt, das man gar nicht löschen kann.
Was aber hier schief gehen wird: Eine static deklarierte, lokale Variable wird nur einmal initialisiert. In arr wird also immer nur das a aus dem ersten Aufruf liegen. Einmal arr[2] = a; hilft hier aus. Als Aufrufer von foo muss man dann auch darauf achten, dass immer auf dem selben Array gearbeitet wird.

simon.r
Mausschubser
Mausschubser
Beiträge: 59
Registriert: 4. Okt 2010 16:13

Re: c++ Pointer Frage

Beitrag von simon.r » 26. Okt 2014 17:25

Der Code lässt sich zumindest unter gcc so noch nicht einmal compilen, weil das statische Array nur mit konstanten Werten initialisiert werden darf ("error: initializer element is not constant").

Sascha-Thorsten
Mausschubser
Mausschubser
Beiträge: 51
Registriert: 4. Okt 2010 09:20

Re: c++ Pointer Frage

Beitrag von Sascha-Thorsten » 26. Okt 2014 17:59

Mittlerweile hab ich etwas anderes gemacht, aber das will auch nicht funktionieren. Ich glaub ich sollte mal ne Pause machen

Antworten

Zurück zu „Archiv“