Creo que deberias echar un ojo a los new y delet.
Al usar declarar un strings normal estas usando la pila.
No hay nada de malo, lo que pasa es que el sistema operativo debe de estar capando te.
si quieres usar grandes cantidades de memoria tienes que usar el operador new para usar el "Heap" o conocido como memoria dinámica.
Aquí te explica algo sobre eso:
http://www.youtube.com/watch?v=y_b9RHqMh_M
El primero es el new, este es delete:
http://www.youtube.com/watch?v=DqVEM37ND1U
Aquí mas sobre el tema:
http://minidosis.org/C++/Punteros%20y%20Referencias/
Aquí la pagina completa muy util:
http://minidosis.org/C++/