精華區beta Programming 關於我們 聯絡資訊
※ 引述《tinlans.bbs@whshs.cs.nccu.edu.tw (汀)》之銘言: > "string" 會放在公用的 literal pool 裡面, > 不會因為 function 被 call 或 return 就遭到破壞, > 而且通常是 read only 的。 > (1) 會在 stack 上 allocate 一塊大小為 strlen("string") 的空間, > 然後把 "string" 這幾個字元含結尾的 NULL 複製到這個空間去, 請問一下 為何不是 allocate 一塊大小為 strlen("string") + 1 的空間呢? > 當 getStr() return 時會傳回 str 這個 array 的起始位址, > 可是這塊空間又會隨著 getStr() return 被釋放掉, > 所以 compiler 會警告這是不安全的行為。 > (2) 是直接把 literal pool 裡存放 "string" 的起始位址設給 str, > getStr() return 時不會破壞存放 "string" 的地方, > 所以就不會有 warning。 -- , 秘密情人 (bbs.cse.ttu.edu.tw) ~\ Post From: 61-228-208-56.dynamic.hinet.net