Модификатор условной точки останова, чтобы увидеть, изменился ли массив

Я играл с модификатором точки останова изменения переменных в Visual Studio 2012. Насколько я понимаю, модификатор изменения переменной приводит к сбою отладчика, если указанное значение переменной изменяется от предыдущего выполнения расположения. Я думаю, что это было бы полезно для сужения памяти перезаписывает. Мой очень простой код C ++ такой:

int main ()
{
printf("This program converts upper case chars to lower and vice versa\n");

char str[20]="lowercase";;

int i;

for (i=0; i < strlen(str); i++)
{
if (str[i]>=97 && str[i]<=122)
{
str[i]-=32;
}
else
{
str[i]+=32;
}
}

str[1] = 'o';
printf("%s\n",str);
system("PAUSE");
}

Теперь я устанавливаю условную точку останова на две строки

  • str[i]=str[i]-32
  • printf("%s\n", str)

ударить, когда массив str изменения. Для этого я устанавливаю точку останова местоположения, затем выбираю «условие» при щелчке правой кнопкой мыши и в текстовом поле условия помещаю стр. 20. Наконец я выбираю переключатель «изменилось».

Теперь я вижу вот что:

Точка останова срабатывает каждый раз на линии str[i]-=32, но никогда не на линии printf("%s\n", str) и мне любопытно, почему. Очевидно, что массив изменился из-за строки, предшествующей printf Скажите, почему же не достигнута точка останова?

Что мне здесь не хватает?

2

Решение

Вы ломаетесь, только когда эта память написана, а не прочитана. Функция printf только читает эту память.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector