lokale vs. globale Speicherallokation
-
Hi,
ich möchte mittels einer Funktion einen charpointer manipulieren. Da ich mich im Hauptprogramm nicht jedes Mal um die Speicherallokation kümmern will, soll die Funktion das übernehmen. Den boolschen Rückgabewert brauche ich auch.
Warum funktioniert folgender Code nicht:BOOL doManipulation(char* c) { int size = otherFunction.getSize(); c = (char*)calloc(size, 1); BOOL result = otherFunction.Manipulate(c); return result; } char* pChar; if(doManipulation(pChar)) doSomething(pChar);
?
Bzw, gehe ich richtig in der Annahme, dass der allokierte Speicher nach Verlassen des Funktionsrumpfes wieder freigegeben wird?
Wie wird das richtig implementiert?Gruß, Thomas.
-
Verdammt, sollte es dieser kleine Adressoperator etwa tun?
BOOL doManipulation(char* &c) { int size = otherFunction.getSize(); c = (char*)calloc(size, 1); BOOL result = otherFunction.Manipulate(c); return result; } char* pChar; if(doManipulation(pChar)) doSomething(pChar);
Plötzlich regt sich der Compiler nicht mehr auf, dass ich mein pChar nicht initialisiere
-
Thomas++ schrieb:
Verdammt, sollte es dieser kleine Adressoperator etwa tun?
dasi ist 'n c++ 'referenz'-operator. hat den gleichen effekt wie '**c'
-
Dann bin ich wohl damit auch noch im falschen Unterforum?