Bonjour.
Je butte sur un dernier bug de l'application que je développe en ce moment. À la fermeture de l'application j'obtiens l'erreur
déboggeur actif on pas (lancé hors Lazarus on obtient un splendide plantage final ...).Le projet monprojet a levé une classe d'exception "External: SIGSEGV" à l'adresse 40D898
En cherchant pas à pas, l'erreur provient de TWin32WidgetSet.AppProcessMessages, DispatchMessageW(@AMessage) ligne 566.
Note importante : l'appli crée des objets contenant pour certains d'autres objets que je pense avoir libérés en fermeture d'appli ; mais tant que je n'ai pas demandé à l'appli de les créer, elle se ferme sans erreur.
D'où plusieurs questions :
- cette erreur est-elle bien liée à un problème de libération de mémoire (sigsegv => a priori oui) ?
- Free Pascal n'a pas un mécanisme de libération des objets créés (pour les oublis) ?
- quand je libère un objet (.free) les objets qu'il contient sont-ils libérés aussi ? Je pense en particulier à mes objets mais aussi à ceux de composants de Lazarus (ex. TSQLite3Connexion et les Tdatabase, TTransaction, ...).
- bon, j'avoue, je n'ai pas tenu proprement la liste de tous les trucs alloués à un moment donné ; y a-t-il moyen (simple ! ) d'en retrouver la liste ou la trace quelque part ?
Merci
PS : y a-t-il moyen de capturer cette exception puisqu'elle à lieu en dehors de TForm1.FormClose ?
Partager