免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 8464 | 回复: 27
打印 上一主题 下一主题

[C] [轻松一下]3种无厘头代码,你最无厘头哪一种? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-06-11 10:07 |只看该作者 |倒序浏览
  1. void getmemory1(char *p)
  2. {
  3.         p = (char *)malloc(100);
  4. }

  5. void test1(void)
  6. {
  7.         char *str = NULL;
  8.         getmemory1(str);
  9.         strcpy(str, "hello world");
  10.         cout<< str << endl;
  11. }
复制代码

strcpy(str, "hello world");把"hello world"copy到一个NULL指针,然后你的代码被OS咔嚓,还丢了100字节的内存,因为getmemory1压根就不能分配内存给str:getmemory1给参数p的副本--函数体里的p分配了内存,没参数p毛事。

  1. void getmemory2(char **p, int num)
  2. {
  3.         *p = (char *)malloc(num);
  4. }

  5. void test2(void)
  6. {
  7.         char *str = NULL;
  8.         getmemory2(&str, 100);
  9.         strcpy(str, "hello");
  10.         cout<< str << endl;   
  11. }
复制代码

感觉上一个无厘头吗?这个才无厘头!没free!够无厘头吧?

  1. char *getstring(void)
  2. {
  3.         char *p = "hello world";
  4.         return p;
  5. }

  6. void test3(void)
  7. {
  8.         char *str = NULL;
  9.         str = getstring();
  10.         cout<< str << endl;
  11. }
复制代码

为什么无厘头?因为只能得到一个只读的"hello world"!
单选投票, 共有 141 人参与投票
0.00% (0)
0.00% (0)
100.00% (4)
您所在的用户组没有投票权限

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
2 [报告]
发表于 2008-06-11 10:09 |只看该作者
呵呵,这不是林锐给出的code吗,广泛的应用于笔试

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
3 [报告]
发表于 2008-06-11 10:10 |只看该作者
没看出来和无厘头有啥关系。

论坛徽章:
0
4 [报告]
发表于 2008-06-11 10:13 |只看该作者
原帖由 Godbach 于 2008-6-11 10:09 发表
呵呵,这不是林锐给出的code吗,广泛的应用于笔试

论坛徽章:
0
5 [报告]
发表于 2008-06-11 10:32 |只看该作者
不投票,因为三种都没写过。

论坛徽章:
0
6 [报告]
发表于 2008-06-11 12:17 |只看该作者
这也叫无厘头?? 你也太无厘头了吧

论坛徽章:
0
7 [报告]
发表于 2008-06-11 12:43 |只看该作者
说实话,没什么意思。

论坛徽章:
0
8 [报告]
发表于 2008-06-11 12:45 |只看该作者
第三种库函数经常用吧?
不过不是只读字符串,而是静态缓冲区

论坛徽章:
0
9 [报告]
发表于 2008-06-11 12:46 |只看该作者
说实话,很容易犯错

论坛徽章:
0
10 [报告]
发表于 2008-06-11 12:56 |只看该作者
原帖由 77h2_eleven 于 2008-6-11 12:43 发表
说实话,没什么意思。

把林瑞那个书看了,说实话,现在看起来都觉得丈二和尚,这是什么啊?无厘头的是林瑞为什么用来当考题啊?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP