Quelle est la meilleure façon de tester les unités de code impliquant un échec malloc()
? Dans la plupart des cas, il n'a probablement pas d'importance parce que vous faites quelque chose commeTests unitaires pour l'échec de malloc()
thingy *my_thingy = malloc(sizeof(thingy));
if (my_thingy == NULL) {
fprintf(stderr, "We're so screwed!\n");
exit(EXIT_FAILURE);
}
mais dans certains cas, vous avez d'autres choix que de mourir, parce que vous avez alloué quelques trucs supplémentaires pour la mise en cache ou que ce soit, et vous peut récupérer cette mémoire. Cependant, dans les cas où vous pouvez essayer de récupérer à partir d'un malloc()
qui a échoué, vous faites quelque chose de compliqué et d'erreur dans un chemin de code assez inhabituel, ce qui rend le test particulièrement important. Comment faites-vous réellement cela?
Vous pourriez pirater 'malloc()' et le rendre 0 parfois. –
De nombreuses fonctions de bibliothèque telles que 'printf' peuvent échouer lorsque le processus manque de mémoire. – ephemient
@ephemient Que se passe-t-il si 'fprintf()' se comporte correctement? ;-) –