Existe-t-il une façon standard (ou presque) pour un interpréteur Perl (alias "perl") de se comporter lorsqu'il manque de mémoire ? Est-ce que c'est documenté/spécifié d'une manière ou d'une autre ? Codé de manière uniforme ?
Je suis particulièrement intéressé par les standards qui sont exprimés comme une convention avec le code Perl en cours d'exécution - par exemple, est-ce que die
sera-t-il appelé ? Est-ce que END
sera-t-il exécuté ? Etc...
Je suis d'accord à la fois avec une réponse "théorique" (par exemple, une sorte de document générique "c'est ce que le code Perl doit faire en général en cas de sortie de mémoire" de Larry/P5P/etc..., même si 100% des appels malloc() ne suivent pas cette règle) ; ou une réponse "pratique" (par exemple, tous les appels malloc() en Perl sont enveloppés dans une fonction générique "allocate_memory" qui gère uniformément tous les échecs).
Il est possible que la réponse dépende de ce qui provoque spécifiquement le manque de mémoire (par exemple, une demande de plus de mémoire pour la structure de données du code Perl ou de la mémoire allouée par le code Perl interne sans rapport avec la logique explicite de "besoin de stocker plus de données" dans le programme Perl).
Si la réponse est extrêmement dépendante de l'implémentation, supposez que perl pour Solaris/Linux, et la réduction à toute version stable récente (5.8 à 5.16) est acceptable.
La question est limitée à l'interpréteur Perl standard, quelle que soit la manière dont vous souhaitez le définir en ce qui concerne la configuration de la précompilation (par exemple, perl fourni avec une distribution Linux majeure, ou compilé avec tous les paramètres par défaut, etc...).
REMARQUE : Cette question découle du commentaire de Gilles à l'adresse suivante <a href="https://stackoverflow.com/questions/13234866/can-a-perl-system-call-ever-die#comment18042068_13234866">un autre Q</a>