临时变量的定义与初始化语句编译后如何储存?赋给它的常量又何时创建?

 # 问题遇到的现象和发生背景
在学习C语言内存分布时,我在main函数中使用 char *p = “字符串”
这种形式在静态区储存一个的字符串常量,并将其起始地址付给指针p,但是,无论我如何改变字符串常量长度或者有无定义和初始化语句,我得出的可执行文件大小始终不变。

 # 问题相关代码
#include
代码一:有赋值语句
int main(int argv,char *argc[])
{
char *p = "sad";//字符串任意长度
return 0;
}

代码二:无赋值语句
#include
int main(int argv,char *argc[])
{
return 0;
}

运行结果

img


与注释掉定义字符指针并初始化语句后一致,都是8552

 # 我的问题
对此我产生疑问:我的代码储存在text区,那就算没有执行程序时我的临时变量指针没有分配空间,我的代码也应该被转化成机器码储存在可执行文件中,我设定的字符串常量的信息也应该储存在里面。
1.为什么我改变赋给临时变量的字符串常量长度或者说定义和初始化一个变量,可执行文件大小不变?
2.在临时变量的赋值语句中,赋给它一个常量,那这个常量是在编译时产生还是运行程序时产生?

因为程序都是定义了一个指针而已。只占一个指针变量的空间啊。

C语言的话都是运行时产生

供参考:https://blog.csdn.net/weixin_35715474/article/details/117021745?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~aggregatepage~first_rank_ecpm_v1~rank_v31_ecpm-2-117021745-null-null.pc_agg_new_rank&utm_term=c%E8%AF%AD%E8%A8%80%E4%B8%B4%E6%97%B6%E5%8F%98%E9%87%8F%E5%AD%98%E5%82%A8%E5%9C%A8%E4%BB%80%E4%B9%88%E9%87%8C&spm=1000.2123.3001.4430