这种nullptr的使用是否会产生编译错误?

Pau*_*zak 1 c++ visual-c++ nullptr c++11

有没有一个很好的理由为什么这个代码在没有警告的情况下编译(并在运行时崩溃)与Visual C++ 2010:

int a = *((int*)nullptr);
Run Code Online (Sandbox Code Playgroud)

静态分析应该得出结论它会崩溃,对吧?

Jam*_*lis 6

这种使用会nullptr产生编译错误吗?

没有.

取消引用空指针会导致未定义的行为,但不需要诊断.

静态分析应该得出结论它会崩溃,对吧?

它可能.它不必.如果发出警告肯定会很好.专用的静态分析工具(例如Klocwork)可能会发出警告.

  • 在进行"正常"建筑时,您可能希望它尽可能快地运行(除非您喜欢剑斗),因此跳过琐碎的静态分析(毕竟有目的地解析nullptr)可以提供帮助. (4认同)