2010-02-10 7 views
10

Estoy intentando utilizar std: getline() pero conseguir un error de ejecución extraño:C++ utilizando getline() impresiones: puntero siendo liberado no asignada en XCode

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

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 me sale este error. De los comentarios parece ser un error específico de OSX/XCode. ¿Alguna pista sobre eso?

Actualización: El error solo se imprime en el modo de depuración. Si construyo este código en modo Release todo está bien.

Actualización 2: Más información sobre este tema se puede encontrar en here.

Solución:

Conjunto

_GLIBCXX_FULLY_DYNAMIC_STRING=1

en su preprocesador macros en objetivos info pestaña construir.

información

Sistema:

OSX 10.6.2 | XCode 3.2 | g++ 4.2 | debug config for i386

+1

Se ejecuta bien en mi máquina. No estoy usando una MacBook, así que podría tener algo que ver con eso, pero en XP con VS2008 se compila y funciona bien. – ihtkwot

+1

Del mismo modo, se compila y se ejecuta sin errores en mi PPC Powerbook. Mac OS 10.4 con g ++ 4.0.1. Y se ve bien ... – dmckee

+0

Compila y funciona bien en Visual Studio 2008 para mí también. –

Respuesta

10

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 de la definición (_GLIBCXX_FULLY_DYNAMIC_STRING no es que entiendo nada de lo que escribo aquí).

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

+0

Esto es todo. Reproduje el problema y lo solucioné agregando '_GLIBCXX_FULLY_DYNAMIC_STRING' a la ventana de configuración de destino. (No lo agregue a la sección "Preprocesamiento" de la ventana de configuración del * Proyecto *; eso no hace nada. XCode, grrrrr ...) – Potatoswatter

+0

Dado que se trata de un trabajo en equipo, ¿alguien desea informar un error? – Potatoswatter

Cuestiones relacionadas