免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: bgifu
打印 上一主题 下一主题

[C] 去腾讯面试碰到个题目,求助一下 [复制链接]

论坛徽章:
0
151 [报告]
发表于 2009-12-04 09:42 |只看该作者
很不理解,这个问题竟然讨论的这么激烈,发人深思。。。

同意 fera (raof01) 的说法, 反汇编一下一切都明白了

论坛徽章:
0
152 [报告]
发表于 2009-12-04 10:07 |只看该作者
原帖由 toknl 于 2009-12-3 21:08 发表
void   GetMem(char   *p)   
  {   
        p   =   (char   *)malloc(100);   
  }   
   
  void   test(void)   
  {   
    char   *str   =   NULL;   
  GetMem(str);   
  strcpy(str,"hell ...



你这个getMem  传入的地址p 不能被修改  应该是 char **p
*p = (char *)malloc(100);

不然你下面的sprintf会crash

论坛徽章:
0
153 [报告]
发表于 2009-12-04 10:24 |只看该作者

指针定义问题

getMem内部的p指针应该定义成static char *p;
getMem 函数调用完后,相关的在栈里分配的空间是会被释放的,p指针原来用的空间会被重新分配,所以才会出错。

论坛徽章:
0
154 [报告]
发表于 2009-12-04 10:31 |只看该作者

大家还是需要提高自身水平

aaaaaaaaaaa

[ 本帖最后由 huang_bu 于 2009-12-4 10:45 编辑 ]

论坛徽章:
0
155 [报告]
发表于 2009-12-04 10:39 |只看该作者
原帖由 huang_bu 于 2009-12-4 10:24 发表
getMem内部的p指针应该定义成static char *p;
getMem 函数调用完后,相关的在栈里分配的空间是会被释放的,p指针原来用的空间会被重新分配,所以才会出错。

就您这,还老C?
原帖由 huang_bu 于 2009-12-4 10:24 发表
看了大家的答复,唉,作为一个老C, 很郁闷,客观来说这道题目还是不错的,能体现相关人员对C,即相关程序运行原理性的考核,结果很多都是肤浅的答复或则完全不理解的扯淡。希望大家都能实实在在的提高自身的水平。

不要说别人了,您也好好学学C去吧。前面那么多同学说得那么清楚了,反汇编也可以告诉你结果了。

论坛徽章:
0
156 [报告]
发表于 2009-12-04 10:42 |只看该作者

关于传参的问题

可以看这个:
http://www.cs.umbc.edu/~chang/cs313.s02/stack.shtml
关于传参和返回值,可以看这个:
http://blog.chinaunix.net/u/12783/showart_1934253.html
要不就像langue说的,大家别搞C了吧

[ 本帖最后由 fera 于 2009-12-4 10:46 编辑 ]
九片_cu 该用户已被删除
157 [报告]
发表于 2009-12-04 11:00 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
158 [报告]
发表于 2009-12-04 11:04 |只看该作者
原帖由 yonwen 于 2009-12-3 16:42 发表
呵呵,是很有可能获得,但是这个p存储地址的内存(不是malloc分配的空间)已经被系统认为是释放掉的,也就是会被系统拿来给别的程序使用,这样在系统重新分配之前,这个p存储的地址是OK,一旦在程序运行过程中  ...


说的貌似有点道理,差点被你忽悠了。。。。

论坛徽章:
0
159 [报告]
发表于 2009-12-04 11:08 |只看该作者
哎,看来CU不行了,这么个问题争成这样...

论坛徽章:
0
160 [报告]
发表于 2009-12-04 11:10 |只看该作者
原帖由 davycu 于 2009-12-4 11:08 发表
哎,看来CU不行了,这么个问题争成这样...

所以我好几次看见langue版主抓狂了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP