C ++ en utilisant imprime getline (): pointeur étant libéré n'a pas été alloué dans XCode
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
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: