¿Puede un bool no inicializado provocar un crash del programa en C++?
¡Hola! Recientemente empecé a estudiar C++ y me encontré con una situación extraña. Tengo este código:
```cpp
#include
int main() {
bool flag; // no inicializado
if (flag) {
std::cout << "True" << std::endl;
} else {
std::cout << "False" << std::endl;
}
return 0;
}
```
En mi compilador (g++ en Ubuntu) imprime consistentemente "False", y el programa funciona normalmente. Pero he oído que usar variables no inicializadas es comportamiento indefinido (undefined behavior). ¿Significa esto que el programa podría realmente fallar? Después de todo, bool es solo un byte que puede ser 0 o 1, e incluso si contiene basura, la comprobación de true/false debería funcionar, ¿verdad?
Me interesa especialmente el caso de compilación con LLVM/Clang. He leído que allí pueden haber optimizaciones que hacen algo inesperado con bool. ¿Puede el compilador generar código que provoque un segmentation fault o un bucle infinito? ¿O todo esto es solo teoría?