Я пытаюсь отладить свой код с помощью valgrind. Большинство сообщений, которые я получаю, таковы:
Conditional jump or move depends on uninitialised value(s)
or
Invalid read of size 8
Меня в основном беспокоит первое: если бы значение было действительно неинициализированным, я полагаю, что произойдет ошибка сегментации. Я проверил это, отправив тот же указатель на другую функцию вместе с неинициализированным указателем на функцию, которая, как я знаю, вызывает ошибку сегментации, и только действительно неинициализированный указатель вызывает ошибку сегментации.
Что также может означать это сообщение об ошибке.
Кроме того, что означает вторая ошибка?
Edit1
Вот код модели, выдаст ли он ошибку 1 (предположим, что файлы заголовков допустимы)?
a.cpp
B b;
C c;
int main(){
return 0;
}
B.cpp
extern C c;
// double t; //canceld, declared in the header.
B::B(){
this->t = 1;
c.test(t);
}
B::test(){
c.test(this->t);
}
B.cpp
C::C(){
}
C::test(double t){
printf("%f\n",t);
}
test()
из конструктора B, это будет проблемой. В противном случае это больше похоже на то, что у вас естьif (x > 5)
, гдеx
не имеет значения. Это не будет проблемой. - person Bo Persson   schedule 01.08.2011t
здесь. Похоже, что это часть B, но объявлена как свободная переменная в b.cpp. Бесплатная переменная - всего лишь отвлекающий маневр? - person daramarak   schedule 01.08.2011c
до запуска ее конструктора является ошибкой. Если конструктор пуст, он все равно может работать, но это все равно ошибка. - person Bo Persson   schedule 01.08.2011