Es un patrón común para usar plantillas para forzar al compilador a inicializar valores de tipos primitivos/POD (https://stackoverflow.com/a/11493744/16673 o http://www.codeproject.com/Articles/825/Using-templates-for-initialization).Plantilla para realizar la sobrescritura automática de memoria en la destrucción
¿Existe un patrón similar que podría utilizarse para borrar el valor una vez que se sale del alcance por razones de seguridad, para asegurarse de que el valor no quede en la pila una vez que la variable se destruye? Me temo que una implementación análoga ingenua podría no funcionar, ya que el compilador puede ignorar cualquier asignación a un valor que está fuera del alcance, ya que se puede probar trivialmente que el valor ya no se usa. ¿Hay alguna solución consistente y razonablemente portátil, por ej. usando volátil?
Sonido razonable. Sin embargo, limpiar con randoms parece aportar pocos beneficios, la puesta a cero simple debería hacer el trabajo. La solución no intenta protegerse contra alguien que lee los chips de memoria o algo así, solo contra otro proceso de acceso a la memoria. ¿O hay alguna razón para usar datos aleatorios incluso en tal caso? – Suma
La solución parece estar utilizando características (atributos) específicas de GCC. ¿Hay alguna razón para usar el char para el almacenamiento? ¿Por qué no usar el tipo original? – Suma
@Suma depende completamente de lo que quiere lograr. los ceros también serían buenos, es solo una ilustración. – justin