Je n’ai pas fait de C depuis longtemps, mais j’ai l’impression que malloc(0) a un comportement très dépendant de l’implémentation de la bibliothèque correspondante. Je ne suis pas certain que le comportement de malloc(), dans ce cas-là bien particulier, soit défini. Doit-il renvoyer un pointeur nul, ou bien un pointeur sur une zone mémoire allouée de taille nulle (ce qui, cela dit en passant, pourrait amener à une éventuelle consommation de la mémoire, selon l’implémentation de la bibliothèque).
Cela étant, non, en aucun cas, en effet, malloc(0) ne permet de libérer la mémoire précédemment allouée. C’est syntaxiquement impossible, du fait du langage C lui-même, même si ce code était compilé en C , et ce, quelle que soit l’implémentation de la bibliothèque ou l’architecture utilisée.
Cela étant, non, en aucun cas, en effet, malloc(0) ne permet de libérer la mémoire précédemment allouée. C’est syntaxiquement impossible, du fait du langage C lui-même, même si ce code était compilé en C , et ce, quelle que soit l’implémentation de la bibliothèque ou l’architecture utilisée.