结构体中的字符串空间占用

typedef struct
{
	const char* cmd;
	unsigned char len;
}cmd_t;
cmd_t arr[] = {
	"s",1,
	"sf343sffsfsfsgdsg", 2,
};

结构体中的字符串空间占用_第1张图片

这个编译结果是51单片机工程用keil编译的结果,这个结果让我大吃一惊,我一直以为这个data会跟随字符串长度改变而改变。实际只是增加了一个指针的大小。而code区是增大了。

从这里也可以看出即使我声明的char*,编译器也直接将字符串转换为了const  char*,而实际上字符串就是const  char*. 而const自然会被放到code区。而指针也仅仅占用四个字节,因此内存增加也仅仅是随着指针的。

看来还是我学艺不精啊,以前一直傻傻的把字符串声明到一个数组中,然后再将这个把这个数组写到结构体指针中。

 

 

你可能感兴趣的:(C语言语法,开发语言)