- Avete utilizzato un'implementazione STL controllata?
- Ha trovato bug che non ti aspettavi?
- C'è uno che posso provare su Linux gratuitamente?
9
A
risposta
12
L'implementazione GNU della libreria C++ standard fornita con GCC ha controllato STL. Basta aggiungere -D_GLIBCXX_DEBUG
alla riga di comando.
Sì, l'ho usato. Non posso dire con certezza se sono stati rilevati errori ma mi dà più sicurezza che alcune classi di bug non vengano ignorate.
A causa dell'overhead delle prestazioni, viene utilizzato solo il controllo STL per le build di debug.
1
- VC++ di Microsoft strumenti di controllo.
- Cattura facilmente i luoghi in cui gli iteratori fanno riferimento alla memoria fuori limite del contenitore STL a cui appartiene.
- Non sono sicuro, ma penso che dovresti provare la libreria Boost C++. Ha una miriade di funzioni come il controllo dei concetti, ecc. Heck, è diventato la base per lo standard C++ 0x!
2
Non l'ho mai usato, ma una ricerca rapida mostra che STLPort ha checked iterators in modalità DEBUG.
PS: l'utilizzo delle implementazioni STL verificate causerà un notevole impatto sulle prestazioni e ciò che è noto a C++: le sue prestazioni! – themoondothshine
Rileva anche quando si utilizzano gli iteratori di inizio/fine che non puntano nello stesso contenitore. – sbi
@themoondotshine: si utilizza solo la versione controllata in modalità DEBUG, giusto? – Nate