Подтвердить что ты не робот

С++ с использованием getline() prints: освобожденный указатель не был выделен в XCode

Я пытаюсь использовать std: getline(), но получаю странную ошибку времени выполнения:

malloc: * ошибка для объекта 0x10000a720: освобожден указатель не был выделен * установить точку останова в malloc_error_break для отладки

Это код, который вызывает эту ошибку:

//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;
}

Перед каждым словом я получаю эту ошибку. Из комментариев это, по-видимому, ошибка OSX/XCode. Любые намеки на это?

Update: Ошибка выводится только в режиме отладки. Если я создам этот код в режиме Release, все будет в порядке.

Обновление 2: Более подробную информацию по этой проблеме можно найти здесь.

Решение:

Установите

_GLIBCXX_FULLY_DYNAMIC_STRING = 1

в макросах препроцессора на вкладке создания информации о целях.

Информация о системе:

OSX 10.6.2 | XCode 3.2 | g++ 4.2 | debug config для i386

4b9b3361

Ответ 1

Как минимум один человек сообщил о проблемах с g++ 4.2.1 на Apple, которые, возможно, связаны с вашей неправильной конфигурацией стандартной библиотеки с определением _GLIBCXX_FULLY_DYNAMIC_STRING (не то, что я понимаю какой-либо из тех, m вводя здесь).

В цепочке новостей, которая включает это сообщение, вы можете получить немного подсказки: