http://www.faqs.org/qa/qa-3786.html
A NULL pointer assignment is a runtime error
It occurs due to various reasons one is that ur program has tried to access an illegal memory location.
Illegal location means either the location is in the operating systems address space or in the other processes memory space.
In stdio.h NULL is defined as 0
So whenever your program tries to access 0th location the operating system kills your program with runtime assignment error because the 0th location is in the operating systems address space and operating system doesnt allow access to its address space by user program .
Example code:
int* ptr = NULL;
*ptr = 3;
Explanation:
On almost every system, address 0 is reserved. System won't allow you to write to that location. If you try, you will get a runtime exception (access violation, segmentation fault, etc.).