Hej jag har ett Problem det är såhär att jag ha skapat ett program med klasser nästlade i flera steg. MEn nu komemr problemet att från en funktion i klassen returnerar jag en pekare som ej finns kvar efteråt. Hur skall jag komma runt detta (alltså en kvardröjande pekare) ???
Hej jag har ett Problem det är såhär att jag ha skapat ett program med klasser nästlade i flera steg. MEn nu komemr problemet att från en funktion i klassen returnerar jag en pekare som ej finns kvar efteråt. Hur skall jag komma runt detta (alltså en kvardröjande pekare) ???
Då lokala pekare/variabler som skapats i en funktion/metod endast lever i den funktionens/metodens adressrymd och "dör" (blir vad som helst) då man går ur funktionen/metoden finns det bara två saker att göra - använd heapen (allokera minne) eller gör om designen till att funktionen/metoden använder en redan definierad pekare i sin argumentlista:
//princip 1:
int *foo(void) {
int *p;
p = (int*)malloc(sizeof(int); //eller "new int" vid c++
return p;
}
//princip 2:
void foo(int *p) {
...
//bearbeta "p"
}
Vid användade av heapen måste man destruera efteråt så vid enkla operationer på pekare är det mer fördelaktigt att köra med princip 2 ;)
Även om du kör med referenser så är principerna detsamma. Risken finns att det ändå fungerar - tillfälligt - men senare ballar ur och ger det ena märkliga felet efter det andra. Så ska du returnera en pekare måste du allokera för den eller använda en redan definierad sådan.
438 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e