Я пытаюсь использовать std:getline (), но получаю странную ошибку периода выполнения:
malloc: * ошибка для объекта 0x10000a720: освобождаемый указатель не был выделен *, устанавливает точку останова в malloc_error_break для отладки
Это - код, который производит эту ошибку:
//main.cpp
#include
#include
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. Какие-либо подсказки на этом?
Обновление: ошибка только печатается в Режиме отладки. Если я создаю этот код в режиме Release, все прекрасно.
Обновление 2: Больше информации о той проблеме может быть найдено здесь.
Решение:
Набор
_GLIBCXX_FULLY_DYNAMIC_STRING=1
в Ваших Макросах Препроцессора в целях информация создают вкладку.
Информация о системе:
OSX 10.6.2 | XCode 3.2 | g ++ 4.2 | отлаживают конфигурацию для i386
По крайней мере один человек сообщил о проблемах с g++ 4.2.1 на Apple, которые, похоже, связаны с вашими и имеют отношение к неправильной конфигурации стандартной библиотеки с определением _GLIBCXX_FULLY_DYNAMIC_STRING
(не то чтобы я понимал что-то из того, что я здесь печатаю).
Вы можете получить некоторую подсказку из потока группы новостей, который включает это сообщение: