C_facile : Introduction au langage C
Cours

Débordement par excès et par défaut

Définition

Le débordement par excès survient quand on cherche à accéder à une case en dehors du tableau en utilisant un indice plus grand que l'indice maximal possible.

Exemple

include <stdio.h>

#define MAX 1000

int main()

{

    int machin[MAX];

    machin[1500] = 10;

}

La case d'indice 1500 n'existe pas puisque l'indice maximal pour le tableau qui a été déclaré est 999.

Attention

Le débordement par défaut survient quand on cherche à accéder à une case en dehors du tableau en utilisant un indice plus petit que l'indice minimal possible.

Exemple

machin[-2] = 17;

La case d'indice -2 n'existe pas puisque l'indice minimal est 0.

Remarque

Cela peut sembler très surprenant que le compilateur accepte ces instructions, mais c'est le cas. Plus surprenant encore, le programme compilé peut aussi bien fonctionner que ne pas fonctionner.

Les débordements constituent évidemment des erreurs graves de programmation.

Car il est très dangereux d'accéder ainsi à une donnée qui n'existe pas et de la modifier.

En effet, on accède ainsi à des octets dans la mémoire et on les modifie. Cela peut faire "planter" le code, comme cela peut ne pas le faire "planter".

Et puisque le C ne vérifie pas ce genre de chose, ce sont des erreurs très difficiles à détecter quand on les commet.

Les chaînes de caractères (page suivante)Initialisation par lecture (page Précédente)
AccueilImprimer creativecommons : by-nc-ndRéalisé avec SCENARI