En C, ce qui se passe exactement lorsque vous passez un pointeur NULL pour strcmp()?

J'ai lu que les résultats suivants dans un comportement indéfini.

strcmp(foo, NULL); 

Mais qu'est-ce qui se passe "sous le capot" pour ainsi dire? Est foo par rapport à la gestion des déchets de données? Est NULL déréférencé? Quels sont les détails qui causent "un comportement indéfini"?

Qui a dit que la fonction est en panne?
Eh bien, vous pouvez toujours regarder la mise en œuvre du code source...
Le terme "comportement Indéfini" est volontairement vague parce que TOUT peut arriver. TOUT.
Un comportement indéfini signifie qu'il n'est pas indiqué ce qui doit arriver. Donc, l'opérateur peut décider de ce qu'ils se sentent le mieux. Le problème qu'il crée est que l'on ne peut pas se contenter de reproduire le comportement de l'un voit dans un système ou d'ailleurs même pas sur le même système, si les choses changent par exemple, le moteur d'exécution mis à jour ou que le programme est compilé de manière différente ou que le programme est exécuté dans des conditions différentes.
Dit "limité aux règles de la physique et de la logique". Écrit C... 🙂

OriginalL'auteur jfmercer | 2014-02-18