В моем коде у меня есть класс с именем membrane
с функцией с именем exciteMod()
, функцией с именем decide()
и переменной с именем delta_U
.Первая строка exciteMod()
- this->delta_U = 0
.В decide()
у меня есть показатель степени -delta_U
(exp(-this->delta_U)
).которые вызывают ошибку Использование неинициализированного значения размера 8. Что может вызвать это?У меня нет ошибки о delta_U
, которая генерируется в valgrind.
Редактировать: Вот соответствующий сегмент кода:
void membrane::exciteMod(){
this->delta_U = 0;
/* Do some stuff which does not directly affect this->delta_U*/
std::tr1::shared_ptr<bead> bit = this->beads.begin();
while (bit != this->nead.end()){
std::tr1::shared_ptr<bead> b = *bit++;
//calculate the doubles U and nextU on b, nothing here gives a warning in valgrind, anyhow U and nextU on b are always defined
this->delta_U += (b->nextU - b->U);
}
decide();
}
void membrane::decide(){
double r = P.r.ran3() // the random function from numerical recepies
double f = - this->delta_U;
if (r > exp(f)){ //this gives the warning even though delta_U is valid
/*stuff*/
}
}
Thisэто предупреждение:
== 467 == Использование неинициализированного значения размера 8
== 467 == при 0x300B00D75D: __ieee754_exp (в /lib64/libm-2.5.so)
== 467 == по 0x300B022FA3: exp (в /lib64/libm-2.5.so)
== 467 == по 0x40BB9A: мембрана :: решить () (membran.cpp: 813)
==467 == по 0x40EBB1: мембрана :: exciteMod () (memb.cpp: 639)
== 467 == по 0x413994: мембрана :: MCstep (int) (мембрана.cpp: 486)
== 467== 0x402767: main (main.cpp: 14)
Редактировать:
Я должен был упомянуть, что единственное место, где я звоню decide()
, находится внутриexciteMod()
.