Home > Back-end >  How to iterate through a linked list without buffer overflow?
How to iterate through a linked list without buffer overflow?

Time:11-28

I wrote

while (ptr->next != NULL) {
        //code here
        ptr = ptr->next;
    }

and AddressSanitizer is throwing an heap-buffer overflow error.

I added

if (ptr->next != NULL) {
    while (ptr->next != NULL) {
        //code here
        ptr = ptr->next;
    }
}

hoping that maybe it would avoid reading a unallocated address, but now AddressSanitizer is terminating my program with SEGV. I'm not really sure how to fix this as I'm new to programming in C, any insights would be very helpful. Thank you!

CodePudding user response:

You can do

while(ptr != NULL) {
  // code
  ptr = ptr->next;
}

or even

for(type* i = ptr; i != NULL; i = i->next) {
  // code
}
  • Related