Duplicar posible:
std::string and its automatic memory resizing¿Cómo se almacenan las cadenas de C++?
Tengo curiosidad, ¿cómo se almacenan en la memoria cuerdas? por ejemplo, cuando hago esto:
string testString = "asd";
asigna 4 bytes, ¿verdad? a + s + d + \0
.
Pero más tarde, cuando quiero asignar un texto nuevo a esta cadena, funciona, pero no entiendo cómo. Por ejemplo, hago esto:
testString = "123456789"
Ahora debe tener 10 bytes de longitud. Pero, ¿y si no hubiera espacio para tal cuerda? digamos que los otros quintos + seis bytes desde el comienzo de la cadena son tomados por otros 2 caracteres. ¿Cómo lo maneja la CPU? ¿Encuentra una posición completamente nueva en la memoria donde encaja esa cuerda?
Quizás no sea un duplicado exacto, la pregunta original ya sabía que la memoria se asignó dinámicamente por la cadena, que no estoy seguro de que fuera el caso aquí. De todos modos, no votaré para reabrir. –