La bonne Façon de libérer de la Mémoire d'un retour de la Variable

J'ai créé une fonction qui sert à obtenir la saisie de l'utilisateur. Elle exige que l'allocation de mémoire pour la variable contenant l'entrée de l'utilisateur; toutefois, cette variable est retourné à la fin de la fonction. Quelle est la bonne méthode pour libérer la mémoire allouée/retourne la valeur de la variable?

Voici le code:

char *input = malloc(MAX_SIZE*sizeof(char*));
int i = 0;
char c;

while((c = getchar()) != '\n' && c != EOF) {
    input[i++] = c;
}

return input;

Dois-je retourner l'adresse de l'entrée et de le libérer après est-il utilisé?

Curieux de la manière la plus appropriée de la méthode pour libérer de la variable d'entrée.

  • Si vous malloc, finalement, quelqu'un va avoir besoin de free, que ce soit dans un autre api ou de l'appelant. Liées, si pris en charge sur votre plate-forme cible(s), getline, une bibliothèque ajout d'une fonction POSIX.1-2008 date, semble presque faire ce que vous essayez de mettre en œuvre. Il nécessite toujours l'appelant pour finalement free tout retourné allocations, mais fournit également la réutilisation de la sémantique, où votre code ne fonctionne pas. En fonction de l'usage prévu et la plate-forme cible(s), il peut être utile d'examiner.
InformationsquelleAutor w m | 2015-04-15