Я пишу симулятор кэша, и по какой-то причине мои утверждения if продолжают давать мне segfaults. Для целей отладки я добавил несколько операторов печати. Все печатает точно так, как я ожидаю, вплоть до самого утверждения if, а затем он просто плюет обратно Segmentation Fault
.Если оператор вызывает ошибку сегментации
int find_set(node** cache, unsigned set_i, long t, int E) {
printf("finding set\n");
int i; // index
for (i = 0; i < E; i++) {
printf("trying seti = %d and i = %d \n", set_i, i);
printf("cache[set_i][i]->valid_bit = %d\n", cache[set_i][i]->valid_bit);
printf("cache[set_i][i]->tag = %d\n", cache[set_i][i]->tag);
if (cache[set_i][i]->valid_bit == 1) && ((cache[set_i][i]->tag) == t) {
printf("found tag! \n");
cache[set_i][i]->LRU_count = 0; // just used
return i; // index of the set we found
}
}
return -1; // not found
}
Это единственный код в вашей программе? –
Не знаю, как я знаю, что оператор 'if' сам по себе будет генерировать ошибку сегментации. Это, вероятно, линия рядом с ней, которая это делает. Вам нужно показать больше своего кода, который показывает проблему. – lurker
Нет, остальная часть программы работает нормально. Эта часть находится в цикле for. Есть ли причина, по которой утверждение if будет выглядеть так? – fourforrea