【发布时间】:2017-01-30 10:04:36
【问题描述】:
这是我的列表结构:
typedef struct Header {
struct Header* next;
char empty;
int storageSize;
} Header;
我正在遍历一个列表以检查它有多少元素:
int listSize(Header* _header) {
int count = 0;
while(_header->next) {
_header = _header->next;
++count;
}
return count;
}
到达列表末尾后我得到一个段错误。 但是,如果我将其更改为:
int listSize(Header* _header) {
int count = 0;
while(_header->next) {
if(!_header->next) {
_header = _header->next;
++count;
}
else
break;
}
return count;
}
它没有段错误,但它显然也没有正确计算元素。
【问题讨论】:
-
使用调试器。如果您在用尽所有其他调试工作后确实需要帮助,请提供minimal reproducible example。
-
我用的是lldb,但是用的时候没有segfault。
-
你能补充一下你是如何建立你的名单的吗?
-
我认为
while(_header->next) {应该是while(_header) { -
@BenSmith 您的编辑使到目前为止的所有 cmets/answers 几乎毫无用处,您实际上是在问一个新问题,没有提供您的代码的最小示例。请花点时间了解您在此处被告知的内容,如果需要,请发布一个新问题,其中包含您的代码的改进版本和一个最小示例。谢谢。
标签: c list pointers while-loop segmentation-fault