Pregunta

Estoy tratando de utilizar std: getline () pero conseguir un error de ejecución extraño:

  

malloc: * Error de objeto 0x10000a720: puntero de ser liberado, no se asignaron   * establecer un punto de interrupción en malloc_error_break de depurar

Este es el código que produce este error:

//main.cpp
#include <iostream>
#include <sstream>

int main (int argc, char * const argv[])
{
   std::istringstream my_str("demo string with spaces");
   std::string word;

   while (std::getline(my_str, word, ' ')) {
        std::cout << word << std::endl;
   }
   return 0;
}

Antes de cada palabra que sale este error. De los comentarios que parece ser un error específico OSX / XCode. ¿Alguna pista sobre eso?

Actualización: El error sólo se imprime en modo de depuración. Si construyo este código en modo de lanzamiento que todo está bien.

Actualización 2: Más información sobre esta cuestión se puede encontrar aquí .

Solución:

Set

  

_GLIBCXX_FULLY_DYNAMIC_STRING = 1

en su preprocesador macros en objetivos pestaña de información de construcción.

Información del sistema:

  

OSX 10.6.2 | XCode 3.2 | g ++ 4,2 | config de depuración para i386

¿Fue útil?

Solución

Al menos una persona ha informado de problemas con g ++ 4.2.1 en el Apple que parecen posiblemente relacionado con el suyo que tiene que ver con una configuración incorrecta de la biblioteca estándar con la definición _GLIBCXX_FULLY_DYNAMIC_STRING (no es que yo entiendo nada de lo que estoy escribiendo aquí).

Es posible obtener un poco de una pista de la rosca del grupo de noticias que incluye este mensaje:

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