关于字符串的内存分布

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;
}

字符串的内存分布如图所示:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值