maniacquaker
Grünschnabel
Hallo,
das ist der fehler den ich bekomme, wenn ich zum 5. mal (exakt und immer)
mein array erweitere. komischerweise funktioniert der auskommentierte code,
verursacht meiner meinung nach aber ein speicherleak.
die funktion die ich meine heisst enlarge_array() (weit unten)
naja auf jedenfall weiss ich nicht warum das so ein fehler sein soll:
danke im voraus
das ist der fehler den ich bekomme, wenn ich zum 5. mal (exakt und immer)
mein array erweitere. komischerweise funktioniert der auskommentierte code,
verursacht meiner meinung nach aber ein speicherleak.
die funktion die ich meine heisst enlarge_array() (weit unten)
naja auf jedenfall weiss ich nicht warum das so ein fehler sein soll:
Code:
#ifndef _headers_
#define _headers_
#include <time.h>
#include <string.h>
#include <iostream>
#endif
#ifndef _mitarbeiter_
#define _mitarbeiter_
#include "mitarbeiter.h"
#endif
#ifndef _mhandler_
#define _mhandler_
#include "mhandler.h"
#endif
#define min_mitarbeiter 3;
using namespace std;
mhandler::mhandler(){
m=NULL;
max_mitarbeiter=min_mitarbeiter;
cur_mitarbeiter=0;
}
void mhandler::show(){
unsigned int personalnummer=0;
unsigned int i=0;
bool found=false;
string name;
cout<<"Geben sie Bitte die Personalnummer ein: ";
cin>>personalnummer;
for(i;i<max_mitarbeiter;i++){
if(m[i].IsPersonalnummer(personalnummer) && m[i].GetPin()!=0){
found=true;
break;
}
}
if(found==true){
cout<<"Personalnummer: "<<personalnummer<<endl;
m[i].GetName(name);
cout<<"Name : "<<name<<endl;
m[i].GetVname(name);
cout<<"Vorname : "<<name<<endl;
}
else
cout<<endl<<endl<<"Personalnummer nicht vorhanden!"<<endl<<endl;
}
void mhandler::addmitarbeiter(){
unsigned int tmp;
string name;
if(cur_mitarbeiter==max_mitarbeiter-1){
enlarge_array();
}
cout<<"bitte geben sie den namen an: ";
cin>>name;
m[cur_mitarbeiter].SetName(name);
cout<<"bitte geben sie den vornamen an: ";
cin>>name;
m[cur_mitarbeiter].SetVname(name);
do{
cout<<"bitte geben sie die PIN an: ";
cin>>tmp;
cout<<endl;
}while(tmp==0);
m[cur_mitarbeiter].SetPin(tmp);
cout<<"Der Benutzer wird uebernommen...danke"<<endl;
cout<<endl<<"Die Personalnummer lautet: "<<m[cur_mitarbeiter].GetPersonalnummer()<<endl<<endl;
cur_mitarbeiter++;
}
unsigned int mhandler::auth(){
unsigned int personalnummer;
unsigned int pin;
unsigned int i=0;
cout<<"Bitte Authentifizieren sie sich mit ihrer Personalnummer: ";
cin>>personalnummer;
cout<<endl<<"Bitte geben sie ihre PIN ein: ";
cin>>pin;
for(i;i<max_mitarbeiter;i++){
if(pin == m[i].GetPin() && personalnummer== m[i].GetPersonalnummer())
return personalnummer;
}
return 0;
}
void mhandler::enlarge_array(){ //BUGGY ! nachfragen! (mhandler tmp)
mitarbeiter* tmp;
tmp = new mitarbeiter[(max_mitarbeiter+1)];
if(!tmp)
cout<<"Keinen Speicher bekommen :( "<<endl;
memcpy(tmp,m, (max_mitarbeiter)*sizeof(mitarbeiter));
delete [] m;
m=tmp;
max_mitarbeiter++;
/*
mitarbeiter* tmp2=m;
m=tmp;
tmp=tmp2;
tmp2=NULL;
max_mitarbeiter+=1;
*/
}
mhandler::~mhandler(){
delete [] m;
}
danke im voraus