如何在没有缓冲区溢出的情况下遍历链表?
How to iterate through a linked list without buffer overflow?
我写了
while (ptr->next != NULL) {
//code here
ptr = ptr->next;
}
并且 AddressSanitizer 抛出堆缓冲区溢出错误。
我加了
if (ptr->next != NULL) {
while (ptr->next != NULL) {
//code here
ptr = ptr->next;
}
}
希望它可能会避免读取未分配的地址,但现在 AddressSanitizer 正在用 SEGV 终止我的程序。我不太确定如何解决这个问题,因为我是 C 语言编程的新手,任何见解都会非常有帮助。谢谢!
你可以做到
while(ptr != NULL) {
// code
ptr = ptr->next;
}
甚至
for(type* i = ptr; i != NULL; i = i->next) {
// code
}
我写了
while (ptr->next != NULL) {
//code here
ptr = ptr->next;
}
并且 AddressSanitizer 抛出堆缓冲区溢出错误。
我加了
if (ptr->next != NULL) {
while (ptr->next != NULL) {
//code here
ptr = ptr->next;
}
}
希望它可能会避免读取未分配的地址,但现在 AddressSanitizer 正在用 SEGV 终止我的程序。我不太确定如何解决这个问题,因为我是 C 语言编程的新手,任何见解都会非常有帮助。谢谢!
你可以做到
while(ptr != NULL) {
// code
ptr = ptr->next;
}
甚至
for(type* i = ptr; i != NULL; i = i->next) {
// code
}