Sto cercando di usare std: getline() ma ottenere uno strano errore di runtime:C++ utilizzando getline() stampe: puntatore viene liberata non è stata allocata in XCode
malloc: * error for object 0x10000a720: pointer being freed was not allocated * set a breakpoint in malloc_error_break to debug
Questo è il codice che produce questo errore:
//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;
}
Prima di ogni parola ottengo questo errore. Dai commenti sembra essere un errore specifico OSX/XCode. Qualche suggerimento su questo?
Aggiornamento: L'errore viene stampato solo in modalità di debug. Se costruisco questo codice in modalità di rilascio, tutto va bene.
Aggiornamento 2: Ulteriori informazioni su tale problema sono disponibili here.
Soluzione:
Set
_GLIBCXX_FULLY_DYNAMIC_STRING=1
nel vostro preprocessore macro in bersagli informazioni scheda costruire.
informazioniSistema:
OSX 10.6.2 | XCode 3.2 | g++ 4.2 | debug config for i386
Funziona benissimo sulla mia macchina. Non sto usando un MacBook, quindi forse potrebbe avere qualcosa a che fare con esso, ma su XP con VS2008 si compila e funziona bene. – ihtkwot
Allo stesso modo, compila e funziona senza errori sul mio Powerbook PPC. Mac OS 10.4 con g ++ 4.0.1. E sembra giusto ... – dmckee
Compilare e gira bene in Visual Studio 2008 anche per me. –