Buenas, aviso que en las especificaciones del archivo .h falta un '.' previo al "Si 'liberarPromociones' [...]" y esto puede dar lugar a errores de interpretación. En mi caso estuve 5 horas buscando solucionar un problema en el 'unirListaPromociones' cuando en realidad lo que habia pasado es que interprete el texto del liberar como "libera su memoria si 'liberarPromociones' es true".
// Función para liberar una lista de promociones
// Recibe una referencia a un elemento de tipo TListaPromociones y libera su
// memoria Si 'liberarPromociones' es true, libera además la memoria de cada una <- Acá esta el problema
// de las promociones en la colección. La función es O(n) peor caso, siendo n
// la cantidad de promociones en la lista.
// Función para liberar una lista de promociones
// Recibe una referencia a un elemento de tipo TListaPromociones y libera su
// memoria Si 'liberarPromociones' es true, libera además la memoria de cada una <- Acá esta el problema
// de las promociones en la colección. La función es O(n) peor caso, siendo n
// la cantidad de promociones en la lista.