Kurze Frage zu std::string
-
Hallo,
bisher war mir das nicht so bewusst. Ist std::string in der Größe Wirklich fix?
Folgender Code wirft mir einen Fehler.#include <iostream> #include <string> int main (int argc, char * const argv[]) { // insert code here... std::cout << "Hello, World!" << std::endl; std::string a(""); std::cin >> a; return 0; }ändere ich es jedoch ab auf
std::string a(" ");kann ich beim cin 2 Zeichen eingeben. Bei >3 Zeichen gleicher Fehler.
IDE ist übrigens XCode.
Fehler:
Untitled(3574) malloc: *** error for object 0x1000041c0: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
Program received signal: “SIGABRT”
-
Ich weiß nicht was dein Problem ist.
#include <iostream> #include <string> int main() { std::cout << "Hello, World!" << std::endl; std::string a(""); std::cin >> a; //egal was ich eingebe std::cout << a; //hier wird es optimal ausgegeben }Warum die Fehlermeldung kommt, verstehe ich auch nicht. Das Programm lässt sich mit CodeBlocks fehlerfrei ausführen.
-
FreakY<3Cpp schrieb:
Ich weiß nicht was dein Problem ist.
#include <iostream> #include <string> int main() { std::cout << "Hello, World!" << std::endl; std::string a(""); std::cin >> a; //egal was ich eingebe std::cout << a; //hier wird es optimal ausgegeben }Warum die Fehlermeldung kommt, verstehe ich auch nicht. Das Programm lässt sich mit CodeBlocks fehlerfrei ausführen.
XCode hällt sich hier wohl nicht an den Standard. Bzw. vlt ja auch gcc nicht. Weiß jetzt nicht wie es genau im Standard definiert ist.
-
Die IDE hat herzlich wenig mit mit dem Programmverhalten zu tun, das liegt immer am Compiler bzw der std::string-Implementierung. Code::Blocks wird i.d.R. auch mit gcc benutzt und der Codeschnippsel funktioniert da auch.
Benutzt du vielleicht eine Uralt-Version vom gcc?
-
Ich hab keine Ahnung welchen gcc XCode nutzt ;). Weiß nicht mal ob es GCC ist. Glaube aber schon
-
Na, dann gib mal gcc -v ein... und bei der Gelegenheit kannst du gleich versuchen, den Code direkt mit dem gcc ohne IDE zu kompilieren.
-
gcc version 4.2.1 (Apple Inc. build 5646) (dot 1)
in der Konsole gehts
Also wohl doch ein anderer Kompiler
-
Wenn ich mich recht erinnere ist der Apple-GCC ziemlich kaputtgepatcht. Darüber hat sich der Maintainer von Portage-Prefix (also Gentoos Paketmanager auf quasi beliebigen unixoiden Betriebsystemen, unter anderem und vor allem OS
mehrmals mokiert.Schau vielleicht mal, ob in XCode auch GCC 4 eingestellt ist, IIRC ist die Standardeinstellung bei XCode 2 nämlich GCC 3.
-
.filmor schrieb:
Wenn ich mich recht erinnere ist der Apple-GCC ziemlich kaputtgepatcht. Darüber hat sich der Maintainer von Portage-Prefix (also Gentoos Paketmanager auf quasi beliebigen unixoiden Betriebsystemen, unter anderem und vor allem OS
mehrmals mokiert.Schau vielleicht mal, ob in XCode auch GCC 4 eingestellt ist, IIRC ist die Standardeinstellung bei XCode 2 nämlich GCC 3.
Jo scheint wohl ein Bug in Xcode zu sein.
-
sirchillalot schrieb:
Jo scheint wohl ein Bug in Xcode zu sein.
Wieso "Bug in Xcode" ??? Du weißt schon, dass Xcode kein Compiler ist, ja?