Une erreur de segmentation (en anglais segmentation fault, en abrégé segfault) est un plantage d'une application qui a tenté d'accéder à un emplacement mémoire qui ne lui était pas alloué.
Les applications, lorsqu'elles s'exécutent, ont besoin de mémoire vive, allouée par le système d'exploitation. Une fois allouée à l'application, aucune autre application ne peut avoir accès à cette zone ; cela garantit une sûreté de fonctionnement pour chaque application contre les erreurs des autres. Ainsi, si une application tente le moindre accès à une zone mémoire qui ne lui est pas allouée, le système d'exploitation le détecte et stoppe immédiatement son exécution.
La très grande majorité des erreurs de segmentation ne sont pas volontaires (si elles le sont, il y a de fortes chances que cela soit dans un but malicieux) ; elles sont dues à une mauvaise conception ou réalisation de l'application.
Dépassement de tampon
Lorsqu'un programme s'exécute, le système d'exploitation lui alloue de la mémoire. Mais il arrive qu'au cours de son exécution, pour ses besoins de traitements, l'application ait besoin de mémoire supplémentaire. Elle demande alors au système d'exploitation de lui allouer une certaine quantité de mémoire. C'est ensuite à la charge de l'application d'utiliser cette mémoire et de faire attention à ne pas écrire ou lire en dehors de la zone mémoire allouée.
Tout le problème est de bien savoir où l'on se trouve lorsque l'on utilise cette mémoire. Et c'est à ce moment-là que si l'on n'y prend pas garde, on déborde de la mémoire et l'application se termine. C'est ce que l'on nomme un dépassement de tampon.
Une autre cause d'erreur de segmentation est la mauvaise initialisation d'un pointeur. Ce dernier pointe alors sur une zone mémoire quelconque et lorsqu'on l'utilise, il y a de forte chances pour que ce dernier contienne une adresse qui n'est pas allouée à l'application. Et comme précédemment, c'est une erreur de segmentation que le système d'exploitation génère.
Cette page est générée automatiquement et peut contenir des informations qui ne sont pas correctes, complètes, à jour ou pertinentes par rapport à votre recherche. Il en va de même pour toutes les autres pages de ce site. Veillez à vérifier les informations auprès des sources officielles de l'EPFL.
En programmation informatique, un pointeur est un objet qui contient l'adresse mémoire d'une donnée ou d'une fonction. C'est l'outil fondamental de l'adressage dit « indirect ». La notion de pointeur reflète l'utilisation différente que l'on peut faire d'un entier naturel, à savoir indiquer une adresse mémoire. Cette utilisation est très différente d'une utilisation arithmétique, d'où la création de registres de processeurs spécifiques (les registres d'adresse) et d'un type de donnée spécifique dans les langages de programmations.
The Cyclone programming language is intended to be a safe dialect of the C language. Cyclone is designed to avoid buffer overflows and other vulnerabilities that are possible in C programs, without losing the power and convenience of C as a tool for system programming. Cyclone development was started as a joint project of AT&T Labs Research and Greg Morrisett's group at Cornell University in 2001. Version 1.0 was released on May 8, 2006. Cyclone attempts to avoid some of the common pitfalls of C, while still maintaining its look and performance.
Une unité de gestion mémoire (MMU pour memory management unit), parfois appelée unité de gestion de mémoire paginée (PMMU pour paged memory management unit), est un composant permettant de contrôler les accès qu'un processeur fait à la mémoire de l'ordinateur dans lequel il est placé. À l'époque des premiers microprocesseurs, il s'agissait d'un circuit intégré dédié. Puis le MMU a été intégré aux microprocesseurs, à partir du 80286 pour la gamme Intel x86, à partir du 68030 pour la gamme Motorola 680x0.
L'objectif de ce cours est d'introduire les étudiants à la pensée algorithmique, de les familiariser avec les fondamentaux de l'Informatique et de développer une première compétence en programmation (
The aim of this course is to provide the background in scientific computing. The class includes a brief introduction to basic programming in c++, it then focus on object oriented programming and c++ s
Mettre en pratique les bases de la programmation vues au semestre précédent. Développer un logiciel structuré. Méthode de debug d'un logiciel. Introduction à la programmation scientifique. Introductio
Couvre l'augmentation historique des cellules de mémoire par puce, l'importance de la mémoire dans les architectures de circuits intégrés modernes, l'augmentation spectaculaire du temps de test et divers défauts de mémoire.
Couvre l'injection de code et les attaques de détournement de flux de contrôle, ainsi que des défenses telles que la prévention de l'exécution des données et Stack Canaries.
Molecular dynamics simulations are performed to study the crystallization of formamidinium lead iodide. From all-atom simulations of the crystal growth process and the delta-alpha-phase transitions, we try to reveal the formation of various stack-faulted i ...
Offshore wind farms (OWFs) with modular multilevel converter high-voltage dc (MMC-HVdc) have become an important form of renewable energy utilization. However, if a fault occurs at the tie line between the MMC and the OWF, the fault steady-state current at ...
Volume electron microscopy is the method of choice for the in situ interrogation of cellular ultrastructure at the nanometer scale, and with the increase in large raw image datasets generated, improving computational strategies for image segmentation and s ...