Pregunta

Estoy seguro de que solo estoy haciendo algo estúpido aquí, pero no puedo entender qué es. Cuando intento ejecutar este código:

#include <iostream>
#include <string>
#include <sstream>

using namespace std;

int main(int argc, char *argv[])
{
 string s("hello");

 istringstream input(s, istringstream::in);

 string s2;
 input >> s2;

 cout << s;
}

Entiendo este error:

malloc: *** error for object 0x100016200: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug

Lo único que puedo pensar es que asigné S2 en la pila, pero pensé que las cadenas manejan su propio contenido en el montón. Cualquier ayuda aquí sería apreciada.

Gracias,

hélice

Editar: Se corrigió la última línea de Main, donde cout << s Debería haber sido cout << s2. Se ejecuta sin error si inicialicé S2 a "HI", pero no de otra manera. ¿Es solo un extraño problema de compilación de GCC?

¿Fue útil?

Solución

Funciona para mi.

Pero nunca he hecho esto:

istringstream input(s, istringstream::in); 

Probar

istringstream input(s); 

Otros consejos

Entonces la respuesta resultó ser un error en Xcode. Aquí es un problema similar y su solución.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top