pep*_*psi 4 macos cocoa objective-c
我编写了以下代码来引发崩溃(我正在测试CrashReporter的一些问题):
int *nullp = NULL;
int val = *nullp;
NSLog(@"Hello world %d", val);
Run Code Online (Sandbox Code Playgroud)
在一个全新的项目中(我将它放在app delegate中applicationDidFinishLaunching:
),它会按预期崩溃.但是当我将它添加到我现有的一个项目中时,它不会崩溃!实际上,它最终会将"Hello world 0"打印到系统日志中.
这对我没有任何意义.为什么空取消引用不会导致崩溃?
去除NULL具有未定义的行为,它不必导致崩溃.
话虽这么说,如果你在两个项目中有不同的编译器选项,你很有可能为这些情况获得不同的行为.请参阅此LLVM博客文章,了解未定义的行为.
归档时间: |
|
查看次数: |
721 次 |
最近记录: |