• [^] # Re: Ça picote...

    Posté par . En réponse à la dépêche La robustesse de nombreux navigateurs web mise en cause. Évalué à 2.

    Je ne suis vraiment pas certain que le C++ limite les erreurs de pointeurs. On peut faire des erreurs vraiment vicieuses avec l'héritage multiple. Un petit exemple : supposons qu'on ait une classe AB qui dérive d'une classe A et d'une classe B. Soit le code suivant :


    AB* p_ab = NULL;
    AB& ab = *p_ab;
    B& b = static_cast<B&>(ab);
    if (&b != NULL)
    {
    // LE TEST RETOURNE VRAI !
    }

    Eh bien oui dans l'exemple ci-dessus le test "if (&b != NULL)" est vrai. Pourtant, on pense avoir une référence sur un pointeur null, non ? Ce à quoi on ne pense pas, c'est que le static_cast a augmenté l'adresse de la référence de sizeof(A) octets. Par conséquent si "p_ab" était bien null, "&b" ne l'est plus. C'est pas vicieux ça ?