2009-11-16 12 views
5

Czy ktoś wie dlaczego w Xcode, kiedy robisz coś prostego jakString (C++) w Xcode

string str; 
cout << "input string"; 
getline(cin, str); 
cout << str; 

dostaniemy malloc: *** błędzie dla obiektu 01x100000240: wskaźnik uwolnieniu nie została przydzielona błąd? dzięki.

+0

To wygląda jak błąd w XCode, również dostaję ten problem. – kruczkowski

Odpowiedz

1

To brzmi jak błąd w implementacji. Być może pominąłeś coś ważnego, wypróbuj kompletny testowy przypadek:

#include <iostream> 
#include <ostream> 
// iostream not required to declare operator<<(ostream&,char const*) 
// but ostream is 
#include <string> 

int main() { 
    using namespace std; 
    cout << "Input: "; 
    string line; 
    if (!getline(cin, line)) { 
    clog << "Input error.\n"; 
    return 1; 
    } 
    cout << "You entered: " << line << '\n'; 
    return 0; 
} 
1

Znalazłem kilka odnośników do tego błędu w XCode przez Google. Najlepszym obejście znalazłem

Rozwiązaniem jest dwukrotne kliknięcie na tarczy aby otworzyć okno informacji, przejdź do kartę budować, i przewiń w dół do „GCC 4.2 - przetw” sekcji. W sekcja ta jest ustawieniem o nazwie "Makra preprocesora", która domyślnie ma dwa wpisy: "_GLIBCXX_DEBUG = 1" i "_GLIBCXX_DEBUG_PEDANTIC = 1". Usuń te wpisy.

2

To błąd w kodzie Xcode. Aby to naprawić, wklej te linie na samym początku programu (przed jakimikolwiek instrukcjami #include):

#define _GLIBCXX_FULLY_DYNAMIC_STRING 1 
#undef _GLIBCXX_DEBUG 
#undef _GLIBCXX_DEBUG_PEDANTIC 
+0

Definiowanie _GLIBCXX_FULLY_DYNAMIC_STRING = 1 wszędzie w moim projekcie rozwiązało to dla mnie. Dzięki! –