2009-11-16 9 views
5

¿Alguien sabe por qué en XCode, cuando se hace algo tan simple comoString (C++) en XCode

string str; 
cout << "input string"; 
getline(cin, str); 
cout << str; 

que se obtendría malloc: *** error para objetos 01x100000240: puntero de ser liberado no fue asignado error? Gracias.

+0

Esto parece un error en XCode, también estoy recibiendo este problema. – kruczkowski

Respuesta

1

Esto suena como un error en su implementación. Es posible que haya dejado fuera algo importante, trate de un caso de prueba completa:

#include <iostream> 
#include <ostream> 
// iostream not required to declare operator<<(ostream&,char const*) 
// but ostream is 
#include <string> 

int main() { 
    using namespace std; 
    cout << "Input: "; 
    string line; 
    if (!getline(cin, line)) { 
    clog << "Input error.\n"; 
    return 1; 
    } 
    cout << "You entered: " << line << '\n'; 
    return 0; 
} 
1

me encontré con un par de referencias a este error en XCode a través de Google. La mejor solución que encontré fue

La solución es hacer doble clic en el objetivo para abrir su ventana de información, vaya a la pestaña Crear y desplácese hacia abajo a la "GCC 4.2 - Preprocesamiento" sección. En esta sección es una configuración llamada "Macros de preprocesador" que de forma predeterminada tiene dos entradas, "_GLIBCXX_DEBUG = 1" y "_GLIBCXX_DEBUG_PEDANTIC = 1". Eliminar estas entradas.

2

Es un error en xcode. Para solucionarlo, pegue estas líneas al principio de su programa (antes de cualquier instrucción #include):

#define _GLIBCXX_FULLY_DYNAMIC_STRING 1 
#undef _GLIBCXX_DEBUG 
#undef _GLIBCXX_DEBUG_PEDANTIC 
+0

Definir _GLIBCXX_FULLY_DYNAMIC_STRING = 1 en todas partes de mi proyecto me lo resolvió. ¡Gracias! –