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 ?