Ich habe mich gerade gefragt, in dem folgenden Szenario, ist der Speicher von 'Stringvar' verwendet freigegeben nach Methode1 ausgeführt wird?Erlischt der damit verbundene Speicher den freigegebenen Speicher?
// Just some method
void method2(char* str)
{
// Allocate 10 characters for str
str = malloc(10 * sizeof(char));
}
// Just another method
void method1()
{
char* stringvar;
method2(stringvar);
// Is the memory freed hereafter, or do I need to call free()?
}
frage ich, denn wenn ich eine put ‚frei (stringvar)‘ am Ende des method1, ich habe eine Warnung erhalten, dass stringvar innerhalb method1 ist unitialized (was stimmt).
Vielen Dank für den Hinweis auf den ziemlich ernsten Fehler in Methode2. – emk
Sie sollten den Rückgabewert von malloc nicht werfen, da dies C ist. – aib
Wenn ich das "str" in Methode2 als ein Array adressieren möchte, müsste ich * str [x] verwenden, richtig? – pbean