Respecto a la primera, no se muy bien qué es compilar en Release.
Una aplicación que está en desarrollo se compila en modo "debug", es decir con símbolos de depuración y sin optimizaciones para poder depurar el código con facilidad. Cuando la aplicación sale "a la venta", se compila en modo release, es decir, con las optimizaciones oportunas para que la aplicación funcione lo más fluida posible.
Y sí que cambio la variable 'shouldStop' una vez, pero desde un hilo distinto al que ejecuta el while. Pensaba que esta era una de las situaciones donde entra la utilidad de 'volátile'.
'volatile', como se ha comentado, lo único que hace es impedir que el compilador pueda aplicar optimizaciones sobre la variable. Esta necesidad surge, por ejemplo, a partir de entornos con memoria compartida entre aplicaciones... en los que una variable es accedida a discrección por diferentes fuentes.
no se por qué, al hacer "cin>>c" me da error el programa, pero ese tema será ya para otro post sobre el compilador de visual c++.
char* c;
cin >> c;
c es un puntero y no está inicializado.
Como conclusión, parece que 'volatile' ha perdido importancia, al igual que 'register'.
'volatile' sigue teniendo la misma importancia que tenía en un principio... es una herramienta para casos concretos. Otra cosa es que no te hayas encontrado aún con un caso en el que sea necesario usarla... pero no por eso deja de ser importante... hay proyectos que tendrían bastantes quebraderos de cabeza si no existiese esta palabra clave.
Dicho todo esto, mi pregunta es si puede ser buena idea utilizar el modificador 'volatile' si sospechas que cierta variable puede dar problemas alguna vez.
¿problemas? ¿qué clase de problemas? ¿memoria no inicializada tal vez? ¿accesos a memoria no válida? ¿buffer overflow?
'volatile' sirve para lo que sirve. Si no te queda claro cuando has de usarlo es porque no has terminado de entender su finalidad y no te has encontrado con el problema ninguna vez. Lo dicho, deberías usarla cuando tengas, por ejemplo, memoria compartida entre varias aplicaciones.