void f( int i )
{
int s[MAXLEN]={1};
for( int j=1; j<MAXLEN; j++ ) {
s[j+1]=s[j] * i ;
}
...
}
Тут понятно off-by-one error. Сессия может выглядить так:
1. Прога компилиться и запускается, работает как пень 40MHz...
2. Прога автоматически тормозится на строкее s[j+1]=s[j]*j;
с ошибкой "выход за границы массива"
3. Девелопер дает команду "выйти из блока назад"
и дебаггер переходит в строку int s[MAXLEN]={1};
восстанавливая все значения (он их запомнил раньше)
4. Девелопер исправляет MAXLEN на MAXLEN-1
5. Это компилируется, прилинковывается,
но при этом значение i и всех остальных стэковых переменных и кучи
*не теряется* и проход программы возобновляетя не с начала,
а с точки int s[MAXLEN]={1};
________________________________________
Где-то такое реализовано (чую, щас лисперы прибегут...) ?
Какова ваша оценка полезности этого в реальной работе ?