Please explain why the program is not crash when access to function PrintMe of object NULL. Please explain me clearly. Thanks.
Because your compiler is not standards compliant (neither is MS) in this respect. Your use of the return type, "void", for main is also non-compliant.
I think you are wrong because p is NULL pointer. The function also have a address, where p points to. But compiler can not know p's address -> so compiler also don't know the function's address.