免费注册 查看新帖 |

Chinaunix

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

今天去华为面试,遇到了一个题,大家看看 [复制链接]

论坛徽章:
0
41 [报告]
发表于 2007-08-13 16:22 |只看该作者
原帖由 poize 于 2007-8-13 14:26 发表
貌似有点问题
不过我还对楼主这种不怕死的精神所折服了


我也是觉得奇怪,怎么还有人敢去华为面试啊,虽然我没去过,但早已经被吓得即使叫我去我也不敢去了.

论坛徽章:
0
42 [报告]
发表于 2007-08-13 16:23 |只看该作者
如果代码改成:

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.                      
  4. int main(void)
  5. {
  6.    
  7. char * str1="6789";
  8. char * str2="123456789";
  9. char * str3="abcdefghijklmnopqrstuvwxyz";
  10. strcpy(str1,str2);
  11. printf("str1=%s\n",str1);
  12. printf("str2=%s\n",str2);
  13. printf("str3=%s\n",str3);
  14. strcpy(str2,str3);
  15. printf("\n");
  16. printf("str1=%s\n",str1);
  17. printf("str2=%s\n",str2);
  18. printf("str3=%s\n",str3);

  19.    return 0;
  20. }
复制代码

结果应该是:

  1. str1=123456789
  2. str2=9
  3. str3=abcdefghijklmnopqrstuvwxyz

  4. str1=12345678abcdefghijklmnopqrstuvwxyz
  5. str2=abcdefghijklmnopqrstuvwxyz
  6. str3=qrstuvwxyz
复制代码

论坛徽章:
0
43 [报告]
发表于 2007-08-13 16:29 |只看该作者
原帖由 hibernator 于 2007-8-13 16:20 发表


为什么是分配8字节,64位机吗

个人觉得和操作系统的内存补齐机制有关系,一般是4个字节对齐的。不同的操作系统对齐机制可能是不同的。这个也是我所接触过的得出的结论,还望高人们指点。

论坛徽章:
0
44 [报告]
发表于 2007-08-13 16:32 |只看该作者
如果从我的这个假设出发,str2所占实际内存应该是10个字节,系统应该分配12个字节,但在hp上做实验发现,str2实际分配的内存是16个字节。有点不明白。

论坛徽章:
0
45 [报告]
发表于 2007-08-13 17:53 |只看该作者

段错误。。。

段错误。。。

论坛徽章:
0
46 [报告]
发表于 2007-08-13 19:23 |只看该作者
这样的结果就是undefined, 后果是一切皆有可能

论坛徽章:
0
47 [报告]
发表于 2007-08-13 20:04 |只看该作者
原帖由 yyjjss 于 2007-8-13 14:00 发表
#include
#include
                     
int main(void)
{
   
char * str1="6789";
char * str2="123456789";
strcpy(str1,str2);
printf("str1=%s\n",str1);
printf("str2=%s\n",str2);
    ...

在有的编译器strcpy就出错了,内存溢出了

论坛徽章:
0
48 [报告]
发表于 2007-08-13 20:42 |只看该作者
我这有《华为编程内部规范》,有一节就是讲内存分配

论坛徽章:
0
49 [报告]
发表于 2007-08-13 21:52 |只看该作者
出题人很诡异。

论坛徽章:
0
50 [报告]
发表于 2007-08-13 22:04 |只看该作者
原帖由 ccjjhua 于 2007-8-13 16:23 发表
如果代码改成:

#include
#include
                     
int main(void)
{
   
char * str1="6789";
char * str2="123456789";
char * str3="abcdefghijklmnopqrstuvwxyz";
strcpy(str1,str2 ...

大哥用什么类型的机器?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP