С++ с использованием getline() печатает:освобождаемый указатель не был выделен в XCode
Вопрос
Я пытаюсь использовать std:getline(), но получаю странную ошибку времени выполнения:
маллок: * ошибка для объекта 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.Есть какие-нибудь намеки на это?
Обновлять:Ошибка выводится только в режиме отладки.Если я создам этот код в режиме 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
определение (не то чтобы я понимал что-либо из того, что пишу здесь).
Вы можете получить некоторую подсказку из ветки группы новостей, которая содержит это сообщение: