C ++: memset en una estructura que contiene std :: wstring - ¿Es un riesgo?

1

Mientras revisaba un fragmento de código en C ++, me topé con instancias (reportadas por CPPcheck) donde se usó memset () en estructuras que contienen miembros de cadena. He encontrado algunas referencias que hablan sobre cómo esto no es una buena práctica. No puedo concluir si este comportamiento puede resultar en un riesgo de seguridad.

referencias:

enlace enlace

Mis habilidades en C ++ son limitadas. Mis disculpas si me estoy perdiendo algo obvio aquí.

    
pregunta Shurmajee 23.09.2016 - 11:40
fuente

1 respuesta

3

Creo que el problema radica en el hecho de que std :: wstring no es necesariamente una estructura simple en el sentido C tradicional.

En su lugar, será una clase con un estado interno, una estructura y, posiblemente, una vtable para funciones de clase que no son necesariamente visibles para usted.

Entonces, si creas () la clase, puedes terminar destruyendo el estado interno y los punteros de función que conducen a un comportamiento indefinido si luego intentas usar la clase. Y como todos sabemos, el comportamiento indefinido es malo.

    
respondido por el Colin Cassidy 23.09.2016 - 12:01
fuente

Lea otras preguntas en las etiquetas