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

Foi útil?

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:

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top