作者ggg12345 (ggg)
看板Soft_Job
标题Re: [闲聊] 大家工作上看过哪些夸张的 CODE ?
时间Wed May 19 12:23:04 2010
※ 引述《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
1F:推 ledia:叹为观止... 懒得纠正你了.... Orz 05/19 13:37
2F:推 bobhsiao:我印象中用recursive call都是传值,应该不会有这个问题吧 05/19 13:40
3F:推 ledia:楼上, 他说的是传回某个 stack address 05/19 13:41
4F:→ ggg12345:不要乱解释.用call reference(address)写递回结果就是了! 05/19 14:49
5F:→ ggg12345:call by reference传结果只要在下个f-call之前,都是对的! 05/19 14:52