2010-02-10 2 views
10

J'essaie d'utiliser std: getline() mais obtenir une erreur d'exécution étrange:C++ en utilisant des impressions getline(): pointeur étant libéré n'a pas été affecté dans XCode

malloc: * error for object 0x10000a720: pointer being freed was not allocated * set a breakpoint in malloc_error_break to debug

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, j'obtiens cette erreur. D'après les commentaires, il semble qu'il s'agisse d'une erreur spécifique à OSX/XCode. Des indices à ce sujet?

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

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

Solution:

Set

_GLIBCXX_FULLY_DYNAMIC_STRING=1

dans vos macros préprocesseur dans les cibles d'info construire onglet.

Informations système:

OSX 10.6.2 | XCode 3.2 | g++ 4.2 | debug config for i386

+1

Il fonctionne bien sur ma machine. Je n'utilise pas de MacBook, donc ça pourrait être quelque chose à voir avec ça, mais sur XP avec VS2008, ça se compile et fonctionne bien. – ihtkwot

+1

De même, il compile et fonctionne sans erreurs sur mon PPC Powerbook. Mac OS 10.4 avec g ++ 4.0.1. Et ça a l'air juste ... – dmckee

+0

Compile et fonctionne bien sous Visual Studio 2008 pour moi aussi. –

Répondre

10

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 _GLIBCXX_FULLY_DYNAMIC_STRING (pas que je comprenne quoi que ce soit de ce que je tape ici).

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

+0

C'est ça. J'ai reproduit le problème et l'ai résolu en ajoutant '_GLIBCXX_FULLY_DYNAMIC_STRING' à la fenêtre des paramètres de la cible. (Ne l'ajoutez pas à la section "Pré-traitement" de la fenêtre des paramètres * Projet *, cela ne fait rien, XCode, grrrrr ...) – Potatoswatter

+0

Puisqu'il s'agit d'un travail d'équipe, est-ce que quelqu'un aimerait signaler un bug? – Potatoswatter

Questions connexes