В блоках кода (С++)
#include<bits/stdc++.h>
using namespace std;
int main(){
int *p;
cout<<*p;
}
производит значение мусора, тогда как
#include<bits/stdc++.h>
using namespace std;
int main(){
int *p=NULL;
cout<<*p;
}
приводит к ошибке выполнения. Я ожидал ошибку времени выполнения для обоих (ideone производит ошибку времени выполнения для обоих), потому что оба являются плохими указателями. Как это можно объяснить?