Кто-нибудь знает, почему в XCode, когда вы делаете что-то простое, как
string str; cout << "input string"; getline(cin, str); cout << str;
вы получите malloc: *** ошибка для объекта 01x100000240: освобожденный указатель не был ошибкой? спасибо.
Это ошибка в xcode. Чтобы исправить это, вставьте эти строки в самом начале вашей программы (перед любыми операторами #include):
#define _GLIBCXX_FULLY_DYNAMIC_STRING 1 #undef _GLIBCXX_DEBUG #undef _GLIBCXX_DEBUG_PEDANTIC
Я нашел пару ссылок на эту ошибку в XCode через Google. Лучший обходной путь, который я нашел, был
Решение состоит в том, чтобы дважды щелкнуть цель, чтобы открыть его окно информации, перейдите к на вкладке Build, и прокрутите вниз до Раздел «GCC 4.2 - Предварительная обработка». В этот раздел называется настройкой «Макросы препроцессора», которые по умолчанию имеет две записи: "_GLIBCXX_DEBUG = 1" и "_GLIBCXX_DEBUG_PEDANTIC = 1". Удалите эти записи.
Это звучит как ошибка в вашей реализации. Возможно, вы упустили что-то важное, попробуйте выполнить полный контрольный пример:
#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; }