Je ne sais pas comment Rational Purify fonctionne, mais il y a des chances que ce qu'il rapporte soit simplement les blocs non libérés à la fin du programme. Ce ne sont pas forcément des fuites : ça peut être aussi des structures de donnée allouées une fois pour toutes, et utiles tout au long de la vie du programme. Dans ce cas même si ton soft (ou la lib) ne fait pas de free(), ce n'est pas un problème : tout sera libéré par l'OS quand le process disparait.
Ensuite même si c'est vraiment une fuite, ce n'est pas parce que c'est dans une lib que tu n'y es pour rien : si un appel réserve de la mémoire, il est possible que la lib ait prévu un autre appel pour la libérer. Peut-être que tu utilises mal la lib, simplement.