В отладчике Visual Studio 2010 есть проблемы с отслеживанием местоположений памяти переменных.Иногда это может ввести вас в заблуждение, потому что VS2010 НЕ показывает переменную, которую вы думаете показывает.
Например, если вы повторно используете имя переменной внутри функции, то какая ячейка памяти должна отображаться в окне наблюдения ИЗМЕНЕНИЯ при изменении области выполнения:
for (int i=0; i<10; i++) {
i=i+1; // do something, what isn't important
}
int i;
for (i=0; i<5; i++) {
i=i+1; // do something
}
printf("i=%d\n", i);
Теперь положитьпеременная i в окне просмотра.
Очевидно, , который i (или значение) отображается в окне просмотра, имеет значение.Если вы запустите программу, то увидите, что когда она входит в цикл for, часы отслеживают переменную i цикла for.Когда он выходит из цикла for, а затем нажимает на код, приведенный ниже, с другой переменной с тем же именем, окно наблюдения не отслеживает память этой переменной.
Вы увидите, что окно наблюдения все еще заявляет, что я равен 10,хотя во 2-м цикле я теперь равен 0,1,2, ... и после 2-го цикла я на самом деле равен 6, но окно просмотра все равно объявляет, что я равен 10.
И что должно Окно часов делать?Я бы сказал, что он всегда должен показывать вам значение переменной с этим именем наблюдения, то есть в области действия , так как правила языка говорят вам, что только одна из этих переменных находится в области действия в любой момент времени.
1023 * его ошибка в функциональности окна часы отладчика здесь (VS2010, кажется, дешевле просто найти первую переменную в функции, которая совпадает с именем вы дали его в часы, и упорно смотреть, что пространство памяти, независимо от того, что ещеможет быть в коде, даже если новая переменная с тем же именем перешла в область видимости (в этот момент окно наблюдения теперь лежит на вас!)