C ++ usando getline () gravuras: ponteiro de ser libertado não foi atribuído no XCode
Pergunta
Eu estou tentando usar std: getline (), mas recebendo um erro de execução estranho:
malloc: * Erro de objeto 0x10000a720: ponteiro de ser libertado não foi alocado * conjunto um ponto de interrupção no malloc_error_break a depuração
Este é o código que produz este erro:
//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;
}
Antes de cada palavra eu recebo este erro. Dos comentários que parece ser um erro específico OSX / XCode. Alguma dica sobre isso?
Update: O erro só é impresso no modo de depuração. Se eu construir este código no modo de versão está tudo bem.
Update 2: Mais informações sobre esse assunto podem ser encontrados aqui .
Solução:
Set
_GLIBCXX_FULLY_DYNAMIC_STRING = 1
no seu Preprocessor Macros em alvos guia Informações de construção.
Informações do sistema:
OSX 10.6.2 | Xcode 3.2 | g ++ 4.2 | configuração de depuração para i386
Solução
Pelo menos uma pessoa tem relatado problemas com g ++ 4.2.1 na Apple que parecem possivelmente relacionados com o seu que têm a ver com uma configuração incorreta da biblioteca padrão com a definição _GLIBCXX_FULLY_DYNAMIC_STRING
(não que eu entendo nada do que eu sou digitação aqui).
Você pode ter um pouco de uma pista do fio newsgroup que inclui esta mensagem: