[問題] char* 儲存的區域

看板C_and_CPP (C/C++)作者 (菸酒生)時間16年前 (2010/06/06 02:00), 編輯推噓4(4014)
留言18則, 5人參與, 最新討論串1/1
請問一下,如果在函式內打 char* a = "hello world"; ex: void A(){ char* a = "hello world"; } 那 "hello world" 是放在 heap segment 還是放在 data segment 呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.231.108.148

06/06 02:02, , 1F
變數名稱忘了打喔 :P
06/06 02:02, 1F

06/06 02:04, , 2F
"hello world"應該在data segment裡面吧
06/06 02:04, 2F

06/06 02:05, , 3F
在編譯時期位置就定下來了
06/06 02:05, 3F

06/06 02:08, , 4F
謝謝提醒以及回答:)
06/06 02:08, 4F
※ 編輯: fantasywater 來自: 61.231.108.148 (06/06 02:08)

06/06 02:12, , 5F
跟const global var一樣放.rodata
06/06 02:12, 5F

06/06 02:14, , 6F
data 的唯讀區:http://tinyurl.com/dmluxp
06/06 02:14, 6F

06/06 02:18, , 7F
gdb/ollydbg是好物,請多加利用
06/06 02:18, 7F

06/06 02:30, , 8F
原po用segment,應該是問ELF對吧?因為PE是講section
06/06 02:30, 8F

06/06 02:41, , 9F
我是用elf來看的,但我記得elf也有section的說法
06/06 02:41, 9F

06/06 02:45, , 10F
對,但是ELF才有區分section/segment,PE通稱為section
06/06 02:45, 10F

06/06 02:48, , 11F
我剛剛查了一下資料說 global的const是放在rodata 但
06/06 02:48, 11F

06/06 02:49, , 12F
是local的 const 是放在 text ?!
06/06 02:49, 12F

06/06 02:53, , 13F
string literal 沒在分 local/global 的。
06/06 02:53, 13F

06/06 02:53, , 14F
為啥放在 .text ? @@
06/06 02:53, 14F

06/06 02:54, , 15F
只要是同一串字,你不管在哪用到都是用同一個位址的那份。
06/06 02:54, 15F

06/06 03:00, , 16F
原po要不要用gdb來確認一下?
06/06 03:00, 16F

06/06 03:08, , 17F
我是看我有一張投影片是這樣分類的 我會去問一下是不
06/06 03:08, 17F

06/06 03:08, , 18F
是打錯了..
06/06 03:08, 18F
文章代碼(AID): #1C2f2czf (C_and_CPP)
文章代碼(AID): #1C2f2czf (C_and_CPP)