Строка (C ++) в XCode - PullRequest
       15

Строка (C ++) в XCode

5 голосов
/ 16 ноября 2009

Кто-нибудь знает, почему в XCode, когда вы делаете что-то простое, как

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

вы получите malloc: *** ошибка для объекта 01x100000240: освобожденный указатель не был ошибкой? спасибо.

Ответы [ 3 ]

2 голосов
/ 19 декабря 2009

Это ошибка в xcode. Чтобы исправить это, вставьте эти строки в самом начале вашей программы (перед любыми операторами #include):

#define _GLIBCXX_FULLY_DYNAMIC_STRING 1
#undef _GLIBCXX_DEBUG
#undef _GLIBCXX_DEBUG_PEDANTIC
1 голос
/ 03 декабря 2009

Я нашел пару ссылок на эту ошибку в XCode через Google. Лучший обходной путь, который я нашел, был

Решение состоит в том, чтобы дважды щелкнуть цель, чтобы открыть его окно информации, перейдите к на вкладке Build, и прокрутите вниз до Раздел «GCC 4.2 - Предварительная обработка». В этот раздел называется настройкой «Макросы препроцессора», которые по умолчанию имеет две записи: "_GLIBCXX_DEBUG = 1" и "_GLIBCXX_DEBUG_PEDANTIC = 1". Удалите эти записи.

1 голос
/ 16 ноября 2009

Это звучит как ошибка в вашей реализации. Возможно, вы упустили что-то важное, попробуйте выполнить полный контрольный пример:

#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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...