¿Cuál es la mejor manera de probar las rutas de código de unidades que implican un error malloc()
? En la mayoría de los casos, es probable que no importa porque estás haciendo algo así comoPruebas unitarias para malloc()
thingy *my_thingy = malloc(sizeof(thingy));
if (my_thingy == NULL) {
fprintf(stderr, "We're so screwed!\n");
exit(EXIT_FAILURE);
}
pero en algunas ocasiones puede tener opciones diferentes de morir, debido a que ha asignado algún material extra para almacenar en caché o lo que sea, y usted puede reclamar esa memoria
Sin embargo, en aquellos casos en los que puede intentar recuperarse de un error malloc()
, está haciendo algo complicado y propenso a errores en una ruta de código que es bastante inusual, lo que hace que las pruebas sean especialmente importantes. ¿Cómo haces para hacer esto?
Se podría secuestrar 'malloc()' y hacerlo volver 0 veces. –
Muchas funciones de biblioteca como 'printf' pueden fallar cuando el proceso se queda sin memoria. – ephemient
@ephemient Lo que está bien, si 'fprintf()' maneja eso correctamente. ;-) –