Bonjour à tous

Voilà le code posant un problème :
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
 
class A {
public:
   ~A() {cout << "destroy" << endl;}
   void print() {cout << "print" << endl;}
};
 
int main (int argc, char** argv) {
 
   A* a = new A;
   a->print();
   delete a;
   a = 0;
   a->print(); // crash ? nenni ! affiche bel et bien "print"
                  // avec : a = 0x00000000 !!!
 
   return 0;
}
Configuration :
* jeu de caractères MBCS
* pas d'optimisations

Et oui, c'est incroyable, mais j'arrive à déréférencer un pointeur nul !!! Du moins, j'y arrive parfaitement sur trois machines différentes (XP). Quelqu'un peut-il m'expliquer ce qu'il se passe ? Comment y remédier (hormis en changeant de compilateur ) ?

Merci à tous !