Bonsoir,
pour commencer, voici le code:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
#include <stdio.h>
#include <stdlib.h>
 
int main () {
  int* foo = NULL;
  int i = 0;
 
  foo = malloc(sizeof(int));
 
  while (1) {
    foo[i] = i;
    printf("%i\n", foo[i]);
    i++;
  }
 
  return 0;
}
l'oeil du programmeur avisé y voit normalement une magnifique erreur de segmentation, dès la seconde itération, puisque l'on tente d'accéder à un bout de mémoire non alloué par le programme... or celle-ci ne survient qu'après... 262111 itérations !!

Je me doute qu'il ne s'agit pas d'un bug, mais est-ce dû au compilateur effectue quelques tests préliminaires pour définir une taille suffisante (ou pas) lors de l'allocation, ou est-ce le gestionnaire de mémoire de mon OS qui a tendance à être laxiste ? À moins que cela-soit un comportement tout à fait normal, auriez-vous davantage d'informations ?

Voici ma commande de compilation:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
gcc -02 -Wall -W -Werror -pedantic -ansi main.c -o out
Merci d'avance !

Ps: je sors de plusieurs mois d'OCaml et de Pascal, quel choc !