2010-02-10 7 views
10

Ich versuchen std zu verwenden: getline(), aber einen seltsamen Laufzeitfehler erhalten:C++ getline() verwendet druckt: Zeiger befreit wurde in XCode nicht zugeteilt

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

Dies ist der Code, der dies erzeugt Fehler:

//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; 
} 

Vor jedem Wort erhalte ich diesen Fehler. Aus den Kommentaren scheint es ein OSX/XCode-spezifischer Fehler zu sein. Irgendwelche Hinweise darauf?

Aktualisierung: Der Fehler wird nur im Debug-Modus gedruckt. Wenn ich diesen Code im Release-Modus erstelle, ist alles in Ordnung.

Update 2: Weitere Informationen zu diesem Problem finden Sie unter here.

Lösung:

Set

_GLIBCXX_FULLY_DYNAMIC_STRING=1

in Ihrem Präprozessormakros in Ziele info Registerkarte bauen.

Systeminfo:

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

+1

Es läuft gut auf meiner Maschine. Ich benutze kein MacBook, aber das könnte vielleicht etwas damit zu tun haben, aber auf XP mit VS2008 kompiliert es und läuft gut. – ihtkwot

+1

Ebenso kompiliert es und läuft ohne Fehler auf meinem PPC Powerbook. Mac OS 10.4 mit g ++ 4.0.1. Und es sieht gut aus ... – dmckee

+0

Kompiliert und läuft auch unter Visual Studio 2008 gut für mich. –

Antwort

10

Mindestens eine Person hat Probleme mit g berichtet ++ 4.2.1 auf Apple, die möglicherweise im Zusammenhang scheinen bei Ihnen mit einer falschen Konfiguration der Standardbibliothek mit der _GLIBCXX_FULLY_DYNAMIC_STRING Definition zu tun haben (nicht, dass ich etwas von dem verstehe, was ich hier tippe).

Sie könnten ein bisschen eine Ahnung von dem Newsgroup-Thread erhalten, die diese Nachricht enthält:

+0

Das ist es. Ich reproduziert das Problem und behebt es, indem ich '_GLIBCXX_FULLY_DYNAMIC_STRING' zum Zieleinstellungsfenster hinzufüge. (Fügen Sie es nicht dem "Preprocessing" -Abschnitt des * Project * -Einstellungsfensters hinzu; das tut nichts. XCode, grrrrr ...) – Potatoswatter

+0

Da dies eine Teamarbeit ist, möchte jemand einen Fehler melden? – Potatoswatter