※ 引述《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 ◆