C++中字面值到底是放在哪的啊?

int a=6;
string str="abc";
在底层6和abc这个值到底放在哪的啊,总不能凭空出现吧,计算机总要到某个地址里找到
6和abc两个值再分别赋值给a和str吧,那么这个地址在哪呢

int a=6;
string str="abc";
这种形如6,"abc"之类的常量是存放在 常量区,int a 只是在栈上初始化了一个4字节int 类型,并且让它值等于6.

这种字面值不用找个地方放起来啊,比如int a = 6,分配a的空间然后把对应空间赋值成6就行了。

第一个,为变量a分陪的空间在哪儿就在哪儿,第二个,是的string的隐式构造

这个看怎么分配的,像6和“abc”就在常量区,a和str要看是局部变量还是全局的,如果是局部的,就在栈上,如果是全局的就在全局的静态存储区

找一个叫ultraedit的编辑器,打开你编译以后的exe,你就看到了,你的字符串在exe文件的某个地方,嵌入在里面。
当你的程序运行的时候,操做系统会把磁盘上的exe文件复制一份到内存,内存的程序叫做程序镜像。
所谓常量区,其实也就是指这个内存程序镜像中的某个区域。
这个区域一般被操做系统保护起来,只能读,不能写。为什么要保护起来,因为如果你的程序能随便改这里的内容,就会破坏程序,甚至让程序执行另外一些代码,这如果被不怀好意的人利用,是危险的。

寄存器里啊,你要知道这个有什么用吗?