Я пытаюсь использовать 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