unit1.cpp
#include <iostream>
using namespace std;
int I = 2;
extern const int J = 10;
void FuncI();
void FuncJ();
int main()
{
cout << hex;
cout << "I, before " << I << " " << *(&I + 1) << endl;
FuncI();
cout << "I, after " << I << " " << *(&I + 1) << endl;
FuncJ();
}
unit2.cpp
extern long long I;
extern int J;
void FuncI()
{
I = I << 36;//causes contiguous memory damage
}
void FuncJ()
{
J++;//causes segmentation fault
}
The program compiles fine and the results are:
I, before 2 0
I, after 0 20
Segmentation fault
Why g++ compiler is so spoiled here. I don't know. In Visual Studio it's impossible to do such nasty things.
No comments:
Post a Comment