从Clang文档页面的代码片段

3
Clang文档页面中有以下代码片段:
struct seven_words {
  int c[7];
};

void test() {
  struct seven_words a, *p;
  p = &a;
  p[0] = a;
  p[1] = a;
  p[2] = a; // warn
}

为什么检查器只在访问p[2]的行上发出警告,而在行p[1] = a;上却出现了分段错误?这是检查器的限制还是有些事情我不理解?


1
你尝试过复现吗?很可能只是一个打字错误。 - user7860670
1
我认为这可能是检查器(标记为alpha)或文档中的错误。正如@VTT所建议的那样,更可能是文档的问题。 - Daniel H
无论如何,将问题提交到他们的错误跟踪器上比在SO上发布更具生产力。 - underscore_d
1
是的,我已经尝试复现它了。检查器甚至没有关于行p[2] = a;的任何警告。 - Wojciech Marzec
1个回答

2
文档有误。(或者,如果它正确地记录了分析器的行为,那么分析器存在缺陷,因为它未能检测到明显的问题。)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接