Я пытаюсь использовать 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. Есть намеки на это?
Обновление:
Ошибка выводится только в режиме отладки. Если я строю этот код в режиме выпуска, все в порядке.
Обновление 2:
Более подробную информацию по этому вопросу можно найти здесь .
Решение:
Набор
_GLIBCXX_FULLY_DYNAMIC_STRING = 1
в макросах вашего препроцессора на вкладке построения информации о целях.
Информация о системе:
OSX 10.6.2 | XCode 3.2 | g ++ 4.2 | отладочная конфигурация для i386