Could anybody help to explain why running the execution file (built from the following C program using Dev-C++ 5.6.3) causes crash? There are some explanation in Pradip Dey and Ghosh Manas 2013 Computer fundamentals and programming in C that says "Location 1000 might contain the program. Since it is a read only, the operating system will throw up a segmentation fault. What about *pi = 5? Again, it will most likely cause a segmentation fault because lower memory addresses are typically used for program code. This area is only read. It should be known in advance where this constant is located in the memory."
However, to me, these explanation are difficult to understand
int main()
{
int *ip;
ip = (int*)1000;
*ip = 5;
}