看板 Soft_Job 關於我們 聯絡資訊
※ 引述《bobhsiao (㊣小臃腫㊣)》之銘言: : 最近看到同事寫一個 : char* GetXXXName(...) : { : char str[256] = {'\0'}; : ..... : return str; : } : 回傳區域變數指標...囧rz : 神奇的是跑起來都沒錯, 大概也不會改了吧 沒出錯有可能那個值不重要且丟出去沒馬上被寫到。 下面這個是更危險的 char* fun(char* c) { ... return c; ... return "ERROR"; } 要這樣用也可以啦,只是....丟出去有寫到就爆了。 例2 char *psr = new char(SENDERLEN*4); psr="\0"; 嗯後面一定會leak跟用到未分配的memory,一次爆兩種。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.204.252.169
ggg12345:如果fun對輸入data與size做了range check這會有問題嗎? 05/15 18:25
sevenjay:有仔細做check也蠻累的,但我指的是return "ERROR"部份 05/15 18:36
bobhsiao:我開始不相信年資了..寫越久不一定越厲害 05/15 20:07
ggg12345:傳回pointer,卻對這個位址做超範圍的利用,是用的人的問題 05/16 08:01
ggg12345:所以是說該禁用pointer嗎?像使用array index也免不了啊?! 05/16 08:04
yauhh:反正傳回null也是要檢查null,傳回"error"難道不能檢查"error 05/16 08:58
ilovebbs:C++ 0x好像有改善第一個的問題 05/16 09:38
ggg12345:這應是OO帶來的問題,老語言靜態配置,對pointer使用甚多! 05/16 16:05
ggg12345:所以資深的反而會溺於老環境老習慣,不適應動態Object考量 05/16 16:08
visor:恩 我也不相信年資 推文一堆錯誤觀念 XD 05/17 09:14
xxxxxxxxxx:- - 05/23 12:30