int* mInt is a pointer to an int, not an int. So you assign 5 to it, whioch means it is pointing at an int in memory at location 0x00000005, which is illegal.

char* mString is a pointer to a char, not a char. However, when you assign a string to it like that, that string already has a memory address that is legal.

Z.