Prima di iniziare, devo dire che la mia applicazione usa molte stringhe, che sono in media abbastanza piccole e che non cambiano una volta create.Posso fare in modo che std :: string usi meno memoria?
In Visual Studio 2010, ho notato che la capacità di std :: string è di almeno 30. Anche se scrivo std::string str = "test";
, la capacità di str è 30. La funzione str.shrink_to_fit()
non fa nulla su questo, anche se una funzione con lo stesso il nome esiste per std :: vector e funziona come previsto, ovvero diminuendo la capacità in modo che la capacità == dimensioni.
- Perché lo
std::string::shrink_to_fit()
non funziona come previsto? - Come posso garantire che la stringa allochi la quantità minima di memoria?
Correlato: http://stackoverflow.com/questions/2916358/immutable-strings-vs-stdstring – JimmyB
È possibile utilizzare un allocatore personalizzato per 'std :: basic_string'. Tuttavia, così facendo creerà un tipo di stringa che non è compatibile con 'std :: string'. – kfx
Questo suona come la piccola ottimizzazione del buffer con un piccolo buffer piuttosto grande. Se si tratta della piccola ottimizzazione del buffer, non è possibile ridurla. –