Avatar ·

Un booléen non initialisé peut-il provoquer un crash du programme en C++ ?

Bonjour ! J'ai récemment commencé à apprendre le C++ et j'ai rencontré une situation étrange. J'ai ce code : ```cpp #include int main() { bool flag; // non initialisé if (flag) { std::cout << "True" << std::endl; } else { std::cout << "False" << std::endl; } return 0; } ``` Avec mon compilateur (g++ sur Ubuntu), il affiche systématiquement "False" et le programme fonctionne normalement. Mais j'ai entendu dire que l'utilisation de variables non initialisées est un comportement indéfini (undefined behavior). Cela signifie-t-il que le programme peut réellement planter ? Après tout, bool n'est qu'un octet qui peut être 0 ou 1, et même s'il contient des déchets, la vérification true/false devrait fonctionner, non ? Je suis particulièrement intéressé par le cas de la compilation avec LLVM/Clang. J'ai lu qu'il peut y avoir des optimisations qui font quelque chose d'inattendu avec bool. Le compilateur peut-il générer du code qui provoque une segmentation fault ou une boucle infinie ? Ou tout cela reste-t-il théorique ?