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ónSistema:
OSX 10.6.2 | XCode 3.2 | g++ 4.2 | debug config for i386
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
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
Compila y funciona bien en Visual Studio 2008 para mí también. –