Re: [閒聊] 大家工作上看過哪些誇張的 CODE ?

看板Soft_Job (軟體人)作者 (ggg)時間16年前 (2010/05/19 12:23), 編輯推噓3(302)
留言5則, 3人參與, 最新討論串30/31 (看更多)
※ 引述《pinkRD (一葉知秋)》之銘言: : ※ 引述《bobhsiao (㊣小臃腫㊣)》之銘言: : : 最近看到同事寫一個 : : char* GetXXXName(...) : : { : : char str[256] = {'\0'}; : : ..... : : return str; : : } : : 回傳區域變數指標...囧rz : : 神奇的是跑起來都沒錯, 大概也不會改了吧 : 就只是為了求方便求快 : 只是為了某些識別的用途 : 這個識別的字串大小固定 這固定大小算是符合 range and array size check 的安全性核驗 避免 stack overflow attack. : 使用這個程式的演算法快速的需求遠大於安全性 : 例如只是輔助演算法判斷之用 : 即使失敗也仍可以繼續正常處理 : 又或者只是輕量級的debug資訊 : 至於不加上static的情況下回傳local variable.... 某些語言先天上支援 recursive function call, 所以使用 stack 存放 local variable. 若傳回 local variable 的 reference address 供上層 呼叫者 使用, 只要上層呼叫者之後不再叫用其他 function procedure 以前, 都是不會動用到 stack. 所以回傳的指標值都不會受 影響. 這是特異用法, 對後續維護者會有副作用後遺症. : 難道是關閉所有中斷line的top half? : 不知道這樣設想對不對... 不知 此段的意思指何處? 處理 interrupt 的 kernel ISR 嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.115.4.12

05/19 13:37, , 1F
嘆為觀止... 懶得糾正你了.... Orz
05/19 13:37, 1F

05/19 13:40, , 2F
我印象中用recursive call都是傳值,應該不會有這個問題吧
05/19 13:40, 2F

05/19 13:41, , 3F
樓上, 他說的是傳回某個 stack address
05/19 13:41, 3F

05/19 14:49, , 4F
不要亂解釋.用call reference(address)寫遞迴結果就是了!
05/19 14:49, 4F

05/19 14:52, , 5F
call by reference傳結果只要在下個f-call之前,都是對的!
05/19 14:52, 5F
文章代碼(AID): #1BysUh4O (Soft_Job)
討論串 (同標題文章)
文章代碼(AID): #1BysUh4O (Soft_Job)