2010-02-24 5 views
2

J'essaie le code suivant et il échoue avec l'erreur suivante:C de la surcharge >> pour ifstream sur pointeur mac étant libéré n'a pas été alloué

malloc: *** error for object 0x10000d8c0: pointer being freed was not allocated 
*** set a breakpoint in malloc_error_break to debug 
Program received signal: “SIGABRT”. 

Voici le contenu du fichier input.txt: Il a plein autorisations et le fichier est ouvert avec succès dans le débogueur. S'il vous plaît aider.

Jacob Anderson 
Michael Thomson 
Joshua Smith 
Mathew Matheis 
Ethan Evans 
Emily Drake 
Emma Patterson 
Madison McPhee 
Hannah Briens 
Ashley Schmidt 

.

#include <iostream> 
#include <vector> 
#include <functional> 
#include <algorithm> 
#include <list> 
#include <fstream> 
#include <string> 

#include <stdio.h> 

using namespace std; 

struct DataType { 
    string lastname;    // (Key) Student's Last Name 
    string firstname;  // Student's First Name 

    string getKey() const 
    { return lastname; } // Returns the key field 
}; 

ostream& operator << (ostream& os, DataType myData) { 
    os<<myData.firstname<< " "<<myData.lastname; 
    return os; 
} 

bool operator < (DataType lhs, DataType rhs) { 
    if (lhs.firstname < rhs.firstname) 
     return true; 
    return false; 
} 

int main() { 
ifstream studentFile ("input.txt"); // Student file 
    list <DataType> students;   // Students 
    DataType currStudent;    // One Student (has firstname,lastname) 

    if (! studentFile.is_open()) 
    { 
     return -1; 
    } 
    while (studentFile >> currStudent.firstname >> currStudent.lastname) { 
     students.push_back(currStudent); 
    } 

    list<DataType>::iterator i = students.begin(); 
    while (i != students.end()) { 
     cout << *i << endl ; 
     ++i; 
    }  
} 
+2

Est-ce le problème? : http://stackoverflow.com/questions/2234557/c-using-getline-prints-pointer-being-freed-was-not-allocated-in-xcode – ergosys

Répondre

0

Le code ressemble bien à moi - je dirais que le problème est d'ailleurs vous avez des pièces qui ne sont pas exactement grand, mais rien qui puisse causer un (peut-être un problème d'installation?) problème majeur (par exemple DataType::getKey n'est jamais utilisé, operator<(DataType, DataType) n'est jamais utilisé, operator<< devrait probablement prendre une référence const au lieu d'une valeur).

+0

J'utilise xcode sur Mac J'ai vu un problème similaire signalé par développeurs iPhone, cependant, n'a pas pu tirer des informations utiles à partir des messages. Vous ne savez pas si c'est le snow leopa 64bit rd causant le problème ou quelque chose de simple que je suis manquant – Kiran

1

Je ne vois rien d'anormal dans le code. Il y a des copies inutiles (les différents opérateurs devraient prendre DataType & plutôt que des objets comme ils le font maintenant pour empêcher la copie des objets.) besoin que pour le code que vous montrer ici.

Aucun des ci-dessus doit déclencher l'erreur que vous voyez, bien. y at-il autre code que vous n'êtes pas nous montrer?

Questions connexes