Dans le langage de programmation C , les pointeurs des informations d'adresse du magasin pour les emplacements de mémoire dans l'ordinateur . Ils permettent également un programme pour permettre à demander à l'ordinateur pour la mémoire (ou mémoire " Occupation" ) lors de l'exécution . Parce pointeurs face à mémoire dynamique , ils viennent avec certains dangers et les inconvénients malgré leur nécessité. Fuites de mémoire
Quand un programme demande la mémoire grâce à l'utilisation d'un pointeur , ce pointeur doit continuellement référence à la mémoire allouée . Si à tout moment un emplacement de mémoire allouée n'a pas de pointeur correspondant (si tous les pointeurs faisant référence à la mémoire des " pointes " d'ailleurs) , que la mémoire ne peut plus être consultée par le programme. Cette mémoire est désormais « orphelins ». Toutefois, l'ordinateur considère toujours cette mémoire allouée . En tant que programme fonctionne en permanence , et les mêmes lignes de code sont exécutés des millions de fois , une erreur dans l'allocation de mémoire par une erreur de pointeur peuvent remplir rapidement la mémoire disponible avec les données inaccessibles , provoquant une fuite de mémoire.
pointeurs NULL
pointeurs qui ne se réfèrent pas à une adresse en mémoire sont appelés pointeurs "null" . Bien qu'elles remplissent des fonctions utiles à la programmation (comme signifiant erreurs d'allocation mémoire ) , un problème majeur se produit lorsque " déréférencement " un pointeur nul ( déréférencement d'un pointeur moyens pour accéder aux données à l'emplacement de mémoire référencé par le pointeur ) . Quand on écrit un programme , pas de contrôles de sécurité manipuler le déréférencement d'un pointeur NULL. En effet, un vaste programme ne peut accidentellement déréférencer un pointeur NULL , quelque part au fond de millions de lignes de code. Lorsque le code est exécuté , cependant, un pointeur null déréférencé causera un programme visant à planter.
Buffer Overflow
Un dépassement de mémoire ( ou " buffer overflow " ) se produit lorsque la mémoire allouée par un pointeur n'est pas assez grande pour l'entrée qu'il reçoit. Par exemple, si un programme alloue de la mémoire pour un mot de sept caractères et reçoit en entrée un mot neuf caractères , les deux personnages supplémentaires sont stockés en mémoire en dehors de la mémoire de pointeurs de sept caractères . Les deux personnages supplémentaires écrasera tout ce qu'il contient. Il n'existe aucun moyen pour le programme de connaître ce qui existe dans ces deux emplacements de mémoire supplémentaires . Ils pourraient contenir des données sensibles pour le programme ( comme les variables du programme ) , ou même pour l'ordinateur lui-même. Cela conduit à la «corruption des données, " car les données qui auraient dû être intact en dehors de la mémoire allouée est maintenant compromise.