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
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
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
Kompiliert und läuft auch unter Visual Studio 2008 gut für mich. –