Détectez les fuites mémoire dans vos programmes

Magazine
Marque
GNU/Linux Magazine
Numéro
213
Mois de parution
mars 2018
Domaines


Résumé
Dans cet article, nous vous invitons à détecter et à corriger les fuites de mémoire. Nous disposons pour cela de trois programmes codés en langage C : un programme dont on a analysé le comportement et qui ne présente pas de fuite de mémoire, un premier programme bogué dont on a investigué et localisé la fuite de mémoire qu’on a par la suite corrigé et testé, et enfin un deuxième programme bogué que l'on va vous présenter et pour lequel on va essayer de susciter votre intérêt pour y trouver la fuite de mémoire et la corriger.


Dans un premier lieu, nous allons essayer de définir les fuites de mémoire par une brève présentation ainsi que les types d’allocations de mémoire en langage C et surtout celle qui peut induire une fuite de mémoire. En second lieu, nous étudierons le comportement de trois programmes dont deux d’entre eux présentent des fuites de mémoire. Enfin, en troisième lieu, nous allons investiguer, trouver et corriger la fuite contenue dans l’un des deux programmes bogués et… nous vous laisserons le soin de corriger l’autre.

1. Introduire les fuites de mémoire

1.1 Présentation des fuites de mémoires

Pour vous définir les fuites de mémoires, permettez-moi de vous confier que, mis à part le fait qu’elles représentent une souffrance lors du traitement de ce genre de problème et que ce soit un calvaire à vivre pour les développeurs C lorsqu’ils corrigent ce type de bug, c’est une véritable perte d’une partie de l’espace mémoire dédié à un programme dont...

Cet article est réservé aux abonnés. Il vous reste 97% à découvrir.
à partir de 21,65€ HT/mois/lecteur pour un accès 5 lecteurs à toute la plateforme
J'en profite


Articles qui pourraient vous intéresser...

Débugage facile avec Sentry

Magazine
Marque
GNU/Linux Magazine
HS n°
Numéro
111
Mois de parution
novembre 2020
Domaines
Résumé

Nous le savons tous, aucun code n’est exempt de bugs. Nous avons beau écrire tous les tests unitaires du monde, tous les tests fonctionnels, avoir une couverture du code par nos tests de 200 %, il y a toujours des bugs qui passent à travers les mailles du filet. Sentry est là pour vous aider à les trouver et à les corriger grâce à vos utilisateurs, et ce, sans qu’ils ne s’en rendent compte.

Résolution azimutale d’un RADAR à bruit : analyse et réalisation d’un RADAR à synthèse d’ouverture (SAR) par radio logicielle

Magazine
Marque
GNU/Linux Magazine
Numéro
242
Mois de parution
novembre 2020
Domaines
Résumé

Nous complétons la mesure de distance des cibles RADAR par la mesure d’azimut rendue possible par la synthèse d’ouverture d’antenne, afin de localiser leur position et ainsi d’identifier précisément leur nature par superposition sur une photographie aérienne. La souplesse de la radio logicielle est illustrée par la montée en fréquence (2,4 GHz), sans modifier aucun élément matériel autre que les antennes.

Débogage JavaScript côté client

Magazine
Marque
GNU/Linux Magazine
HS n°
Numéro
111
Mois de parution
novembre 2020
Domaines
Résumé

Si JavaScript a longtemps évoqué l’idée de petit script dans un site internet, il est aujourd’hui souvent utilisé comme fondation d’application web complexe (notamment via des frameworks comme ReactJS ou VueJS). Dans ce contexte d’usage avancé, il est nécessaire d’avoir en main les bons outils et techniques de débogage.

Principes de l’orienté objet en C++ : l’encapsulation

Magazine
Marque
GNU/Linux Magazine
Numéro
242
Mois de parution
novembre 2020
Domaines
Résumé

La programmation orientée objet obéit à des principes. Les 4 principaux principes sont l’encapsulation, l’héritage, le polymorphisme et la généricité. Que de noms barbares, que nous allons démystifier de manière logique ! Des exemples déclinés dans le langage C++ illustreront ces principes. Ce premier article traite de l’encapsulation.

Déboguer un exécutable Java

Magazine
Marque
GNU/Linux Magazine
HS n°
Numéro
111
Mois de parution
novembre 2020
Domaines
Résumé

On attribue souvent au succès de Java la relative simplicité de sa syntaxe et surtout son vaste écosystème. C’est oublier un point essentiel dans son adoption : son débogueur et ses fonctionnalités qui simplifient tant le travail d’analyse et de résolution d’une erreur à l’exécution.