C ++ en utilisant imprime getline (): pointeur étant libéré n'a pas été alloué dans XCode

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

Question

Je suis en train d'utiliser std: getline () mais obtenir une erreur d'exécution étrange:

  

malloc: * erreur pour objet 0x10000a720: pointeur étant libéré n'a pas été alloué   * définir un point d'arrêt dans malloc_error_break à déboguer

Ceci est le code qui produit cette erreur:

//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;
}

Avant chaque mot que je reçois cette erreur. D'après les commentaires, il semble être une erreur spécifique OSX / XCode. Tous les conseils à ce sujet?

Mise à jour: L'erreur est imprimé uniquement en mode débogage. Si je construis ce code en mode de sortie tout va bien.

Mise à jour 2: Plus d'informations sur cette question se trouve .

Solution:

Set

  

_GLIBCXX_FULLY_DYNAMIC_STRING = 1

dans l'onglet macros préprocesseur dans les cibles d'info de construction.

Infos système:

  

Mac OS X 10.6.2 | XCode 3.2 | g ++ 4.2 | config de débogage pour i386

Était-ce utile?

La solution

Au moins une personne a signalé des problèmes avec g ++ 4.2.1 sur Apple qui semblent peut-être liée à la vôtre d'avoir à faire avec une configuration incorrecte de la bibliothèque standard avec la définition de _GLIBCXX_FULLY_DYNAMIC_STRING (pas que je comprends tout ce que je tape ici).

Vous pouvez obtenir un peu d'un indice du fil de newsgroup qui comprend ce message:

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top