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
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
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
Compile et fonctionne bien sous Visual Studio 2008 pour moi aussi. –