char b[]="abcd";
這個字串是從文字常量區被copy到b陣列中?
還是文字常量區沒有,直接被存盤到b陣列中,?
uj5u.com熱心網友回復:
個人認為是copy到b陣列中。"abcd"不是一個字符,如果是一個字符,可以考慮是直接存盤到b陣列中。
uj5u.com熱心網友回復:
編譯個exe.用od載入。查看字串。我覺得在text段里。uj5u.com熱心網友回復:
首先代碼在編譯時,編譯器看到這個"abcd"字串后,就給你把他放到一個固定的地方【你程式中所有出現的這種直接"字串abc..."都是如此】。這個地方叫靜態常量區。此時,程式中,那個exe【或者dll...】中。存在一個"abcd"
----------------------------------
接著程式執行時,cpu依據這條指令的意思,在堆疊上開辟一段char[]陣列空間。開辟的長度依據面常量區的"abcd\0"為準。然后從常量區將字串復制過來
此時,程式中,這個行程上。存在一個"abcd"【靜態常量區】,這個執行緒堆疊上,有一段空間對應該陣列b。其內容為"abcd\0"【復制而來的】
uj5u.com熱心網友回復:
這個不一定,它和編譯是否優化,資料量的大小有關。uj5u.com熱心網友回復:
一般認為是從常量區拷貝過去的。具體的話需要看到反匯編代碼uj5u.com熱心網友回復:
也就是說可能是從常量區copy過去的,可能是直接嵌入到指令中的,具體那種不好說
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/24101.html
標籤:C語言
