作者sevenjay (coder)
看板Soft_Job
標題Re: [閒聊] 大家工作上看過哪些誇張的 CODE ?
時間Sat May 15 18:04:17 2010
※ 引述《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
1F:推 ggg12345:如果fun對輸入data與size做了range check這會有問題嗎? 05/15 18:25
2F:→ sevenjay:有仔細做check也蠻累的,但我指的是return "ERROR"部份 05/15 18:36
3F:→ bobhsiao:我開始不相信年資了..寫越久不一定越厲害 05/15 20:07
4F:→ ggg12345:傳回pointer,卻對這個位址做超範圍的利用,是用的人的問題 05/16 08:01
5F:→ ggg12345:所以是說該禁用pointer嗎?像使用array index也免不了啊?! 05/16 08:04
6F:→ yauhh:反正傳回null也是要檢查null,傳回"error"難道不能檢查"error 05/16 08:58
7F:推 ilovebbs:C++ 0x好像有改善第一個的問題 05/16 09:38
8F:推 ggg12345:這應是OO帶來的問題,老語言靜態配置,對pointer使用甚多! 05/16 16:05
9F:→ ggg12345:所以資深的反而會溺於老環境老習慣,不適應動態Object考量 05/16 16:08
10F:→ visor:恩 我也不相信年資 推文一堆錯誤觀念 XD 05/17 09:14
11F:推 xxxxxxxxxx:- - 05/23 12:30