Я пишу код для постфиксного калькулятора, для которого мне нужно добавить токены и значения ("a = 5", "b = 10") в массив указателей.
Этот массивуказатели используются, так как я реализую отдельную цепочку. Поэтому каждый индекс является началом связанного списка токенов и значений. Однако существует такая странная ошибка / ошибка, которая заключается в том, что адреса указателей в массиве (начинающиеся как все NULL) изменяются между ними, когда в этом указателе не осуществляется доступ к памяти или изменение адреса. Это происходит между разбором массива указателей. Изображение здесь 1 показывает, что именно произошло, когда я запустил GDB в программе. Красная стрелка указывает на выполняемую линию. Синяя область - это наблюдаемая память, а выделенная линия желтым цветом показывает, что адрес изменился. Вы можете видеть, что предыдущие адреса для той же таблицы symtab-> [3] все равны NULL ({0x0}). Есть идеи, почему это происходит? Сам код здесь ниже,
//This part of the program iterates through each linked list
//Previous declaration of Array of Pointers-
//Symbol* localArrayOfPointers[HASH_TABLE_INITIAL]
Symbol** current = symtab->table;
for (int i = 0; i < hash_get_capacity(symtab); i++)
{ //The address changes in between here I believe
if(current[i] == NULL){
continue;
}
else{
//Other code omitted as there is nothing changing any addresses