在代码块(C++)
#include<bits/stdc++.h>
using namespace std;
int main(){
int *p;
cout<<*p;
}
Run Code Online (Sandbox Code Playgroud)
产生垃圾价值,而
#include<bits/stdc++.h>
using namespace std;
int main(){
int *p=NULL;
cout<<*p;
}
Run Code Online (Sandbox Code Playgroud)
导致运行时错误.我预计两者的运行时错误(ideone会为两者产生运行时错误),因为两者都是错误的指针.怎么能解释这个呢?
Lig*_*ica 15
您对运行时错误的期望是有缺陷的.
取消引用具有任意值的未初始化/无效指针可以执行任何操作.
这意味着潜在的症状包括:
等等.
对于解除引用NULL也是如此,但是现代商品硬件倾向于特别处理NULL解除引用,通常保证分段错误以帮助诊断.显然,CPU不能为任意指针值执行此操作,因为它们可能是有效的,只要它知道!
| 归档时间: |
|
| 查看次数: |
270 次 |
| 最近记录: |