08. november 2003 - 13:23Der er
15 kommentarer og 3 løsninger
Hvorfor fejler denne kode??
Gennem en lang og sej test proces,har jeg fundet ud af at følgende kode frembringer fejl efter lang tids kørsel Den kode der er mærket med ok medfører ingen fejl hvor imod den der er mærket med ikke ok giver fejl
double temp for(int i =1; i < stopat+1;i++) { if(trust_manager->isKnown(route[i].getNSAddr_t())) { //OK int i = route[i].getNSAddr_t(); temp = ( (double)rand()/(double)RAND_MAX+1 ); //IKKE OK temp =trust_manager->getTrustValue(route[i].getNSAddr_t())->getValue();
bool TrustManager::isKnown(nsaddr_t id) { map<nsaddr_t,TrustValue*>::iterator it; it = tvalues.find(id);//if id doesn't exist it returns iterator to the end return(!(it == tvalues.end())); }
og tvalues i TrustManager er map<nsaddr_t,TrustValue*> , hvor nsaddr_t er typedef int
13:29:03> route indeholder nogle adresser. Adressen på den sender ligger i route[0]. En anden metode returnerer stopat, som er der destinationen ligger. dvs route kan godt være længere end stopat, men alt efter stopat er uinterresant i denne sammenhæng
har lige kørt en succes fuld simulering hvor int i, hvar erstattet med int h. Det burde indikerere at det ikke er array adresseringen der er problemet.
double TrustValue::getValue() { // this->value == "value i TrustValue" ikke? if (value ikke har lovlig værdi) springiluften(value);
return this->value; }
TrustValue* TrustManager::getTrustValue(const nsaddr_t& nid) { //remove this check after "debug" map<nsaddr_t,TrustValue*>::iterator it; ---> skal it ikke tildeles en værdi før checket??? if(it == tvalues.end()) { cout <<"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARRRRRRRRRRRRRRRRRRRRRGGGGGGGGGGGGGGGGGGGG"<<endl; } return tvalues[nid]; }
er route defineret som
typex route[stopat+1]; har du check for at du ikke løber ud over enden på arrayet?
segmose> du har helt ret i at if(it == tvalues.end()) er en fejl - dog ikke den der fik det til at chrashe. Jeg har flyttet koden bid for bid til en tidligere version af simulatoren, hvor det kører uden problemer. ? :)
I må gerne lægge et svar begge 2 da i har været til stor hjælp med, dels at påpege fejl, og samtidig "bekræfte" at koden var OK
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.