Bonjour,
Je viens de m'inscrire sur ce forum pour tenter d'avoir une réponse au comportement étrange d'un petit programme C++ faisant, basiquement, un tri par la méthode quicksort.
J'utilise le compilateur g++ (version 4.6.2) sur la plateforme Fedora 16.
Le problème est le suivant :
- quand il est compilé sans option d'optimisation particulière, il marche bien
g++ main.cpp && ./a.out
- dès que j'active une optimisation O2 ou O3 (aucun problème avec O1), il donne un résultat erroné
g++ -O2 main.cpp && ./a.out
g++ -O3 main.cpp && ./a.out
J'utilise une fonction template swap opérant sur des pointeurs, que j'appelle, par spécialisation, via un dynamic_cast sur un type pointeur vers un uint32_t (uint32_t étant de même taille que le float)
c'est un peu tordu, mais ce n'est pas l'objet : je cherche juste à comprendre s'il y a dans ces lignes une erreur grossière de programmation ?
d'autres commentaires sont dans le corps du fichier
votre avis ?
merci
Partager