char * globalHeader = "Chapter";
char globalArrayHeader[] = "Chapter";
void displayHeader()
{
static char *staticHeader = "Chapter";
char *localHeader = "Chapter";
static char staticArrayHeader[] = "Chapter";
char localArrayHeader[] = "Chapter";
char *heapHeader = (char *)malloc(strlen("Chapter")+1);
strcpy(heapHeader,"Chapter");
printf(" staticHeader: %p %p %s\n",staticHeader,&staticHeader,staticHeader); //403000 402010
printf(" localHeader: %p %p %s\n",localHeader,&localHeader,localHeader); //403000 60cc4c
printf(" staticArrayHeader: %p %p %s\n",staticArrayHeader,&staticArrayHeader,staticArrayHeader); //402014 402014
printf(" localArrayHeader[]: %p %p %s\n",localArrayHeader,&localArrayHeader,localArrayHeader); //60cc30 60cc2c
printf(" heapHeader: %p %p %s\n",heapHeader,&heapHeader,heapHeader); //1450590 60c02c
}
int main()
{
displayHeader();
printf(" globalHeader: %p %p %s\n",globalHeader,&globalHeader,globalHeader); //403000 402000
printf("globalArrayHeader[]: %p %p %s\n",globalArrayHeader,&globalArrayHeader,globalArrayHeader); //402004 402004
return 0;
}
字符串的内存分布如图所示: