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

StackOverflow https://stackoverflow.com/questions/2234557

Вопрос

Я пытаюсь использовать 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 определение (не то чтобы я понимал что-либо из того, что пишу здесь).

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top