Open HoltzTomas opened 2 weeks ago
Usa el auxAlum para no pisar alumAprob y asi no perder la referencia en caso de que el realloc falle. Al no perder la referencia puede liberar la memoria previamente utilizada.
En cuanto a la 2da pregunta todos los strings cte que definas, ya sean "hola", "tomas" o "" son direcciones de memoria que apuntan a la seccion readonly de tu programa en ejecucion entonces en definitiva pueden asignarse a cualquier puntero.
Si no quedo claro intento ir en mas detalle :D.
Sisi me imaginaba que iba por ahí la primera parte, pero me hace ruido justamente porque después no lo hace (imagino que por el tema de que salvo en el final no hace falta chequear nada).
Lo segundo se entendió joya, gracias che.
Es para liberarla en el fallo osea cuando entra al if pq realloc le devolvio null o errno esta en ENOMEM
Si bueno, pero el tema está en esta línea al final
alumAprob = realloc(alumAprob, (cantAprob+1) * sizeof(char *));
Hay un caso en el que esta línea no estaría reduciendo, sino aumentando el tamaño en una posición, esto podría dar error y tendríamos que hacer lo mismo que arriba.
Me llamaba la atencion que ahí no lo haga, pero supongo que fue porque en el primer caso fue en modo ilustrativo basandome en el comentario
// En esta versión validamos los malloc y realloc, como ejemplo.
// No es necesario que hagan estas validaciones en los parciales (sí en el final)
Exacto, está como un ejemplo de hacer el realloc validando, guardando primero en una auxiliar. De todos modos, hay que tener demasiada mala suerte para que tengas memoria suficiente para cientos o miles de punteros pero no para uno más.
Programación defensiva 😅
Sólo de lunes a viernes en horario de oficina.
Jajajsjsjs
Dudas resolución cátedra
Dejo un par de dudas sobre la resolución que esta subida del ejercicio 20 guía 7.
char **
), me parece raro que funcionealumAprob[cantAprob] = "";
, ósea me parece raro poder asignarle una cadena constante en lugar de una dirección de memoria. Porque eso funciona?Código completo