C ++: memset su una struttura contenente std :: wstring - È un rischio?

1

Durante la revisione di un pezzo di codice C ++ mi sono imbattuto in istanze (riportate da CPPcheck) in cui memset () è stato utilizzato su strutture contenenti membri di stringhe. Ho trovato alcuni riferimenti che parlano di come questa non sia una buona pratica. Non riesco a concludere se questo comportamento può comportare un rischio per la sicurezza.

riferimenti:

link link

Le mie abilità in C ++ sono limitate. Le mie scuse se mi manca qualcosa di ovvio qui.

    
posta Shurmajee 23.09.2016 - 11:40
fonte

1 risposta

3

Credo che il problema risieda nel fatto che std :: wstring non è necessariamente una struttura semplice nel senso C tradizionale.

Invece sarà una classe con uno stato interno, una struttura e possibili funzioni vtable to class che non sono necessariamente visibili a te.

Quindi se si memset () la classe si può finire per distruggere i puntatori di stato e funzione interni che portano a comportamenti non definiti se si tenta di utilizzare la classe. E come tutti sappiamo il comportamento indefinito è cattivo.

    
risposta data 23.09.2016 - 12:01
fonte

Leggi altre domande sui tag