Here is the whole code:
#include <stdio.h>  //printf
#include <stdlib.h> //malloc
#include <string.h> //memcpy
void main(void)
{
    char* charMem = (char*) malloc(5 * sizeof(char));
    memcpy(charMem, "Hello", 5);
    char charArr[] = "Hello";
    printf(" charMem = %p\n", charMem);
    printf("&charMem = %p\n\n", &charMem);
    printf(" charArr= %p\n", charArr);
    printf("&charArr= %p\n\n", &charArr);
    charMem[2] = 'A';
    charArr[2] = 'A';
}
And output is:
 charMem = 00F8ABB0 //diff
&charMem = 00CFFBB0 //diff
 charArr= 00CFFBA0 //same
&charArr= 00CFFBA0 //same
What is happening behind the compiler that leads to these results?
 
     
    