Как исправить ошибку: Необработанное исключение по адресу...
Такое сообщение: Необработанное исключение по адресу 0x00A8AF69 в ConsoleApplication5.exe: 0xC0000005: нарушение прав доступа при записи по адресу 0x005BF000.
Я выполнил трассировку, стрелка указала на восьмую строчку. Бесконечного цикла, как мне кажется, нет. Да и массив создан динамический. В чем ошибка?
{
int i, j, k, pos = -1, N, M;
int *d = new int;//Массив сдвигов
N = s.length();
M = find.length();
clock_t t0 = GetTickCount(); // начальное время
// Формирование таблицы сдвигов d
for(i = 0; i <= N; i++)
d[i] = M;
for(i = 0; i < M - 1; i++)
d[find[i]] = M - i - 1;
// Поиск образца P в тексте S
i = M;
do{
k = i;
j = M;
do
{
j--;
k--;
}
while(j >= 0 && s[k] == find[j]);
if(j == -1)
pos = i - M;
else
i += d[s[i - 1]];
}
while(i <= N && j >= 0);
if(j > -1)
cout << "Образец найден по смещению pos : " << pos-1 << endl;
else
cout << "Образец не найден" << endl;
clock_t t1 = GetTickCount();// конечное время
cout << "Время поиска : " << (double)(t1 - t0)/1000 << endl;// время поиска
}
system("pause");
return 0;
}
Источник: Stack Overflow на русском