免费注册 查看新帖 |

Chinaunix

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

strcpy怎么这么神奇? [复制链接]

论坛徽章:
0
11 [报告]
发表于 2008-11-18 19:23 |只看该作者
运气好而已。。用strncpy保险一点

论坛徽章:
0
12 [报告]
发表于 2008-11-18 20:32 |只看该作者
用strncpy,'\0'要补上的吧

论坛徽章:
0
13 [报告]
发表于 2008-11-18 21:24 |只看该作者
其实不是他运气好,只是他的程序太简单了,内存里没什么东西. 如果变量多一点就互相覆盖了.

楼主应该试试strcpy后打印pad的内容,是不是被覆盖了

论坛徽章:
0
14 [报告]
发表于 2008-11-18 22:23 |只看该作者

回复 #12 ljysyn 的帖子

很同意这一点。strncpy并不是strcpy的safe版本。

论坛徽章:
0
15 [报告]
发表于 2008-11-18 23:27 |只看该作者
原帖由 sysno 于 2008-11-18 16:39 发表
试运行了很多次(同时运行其他程序), 每次都没有任何错误及警告。
越界的地址能这样随便访问,是否太危险了?


不同的机器会有不同的结果!!
你已经越界,已经造成内存的溢出肯定很危险!!

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
16 [报告]
发表于 2008-11-19 09:04 |只看该作者
注册了5年的ID,还在为这种问题感到疑惑

论坛徽章:
27
处女座
日期:2016-04-18 14:00:4515-16赛季CBA联赛之福建
日期:2023-03-31 15:54:2315-16赛季CBA联赛之深圳
日期:2020-06-02 10:10:5015-16赛季CBA联赛之广夏
日期:2019-07-23 16:59:452016科比退役纪念章
日期:2019-06-26 16:59:1315-16赛季CBA联赛之天津
日期:2019-05-28 14:25:1915-16赛季CBA联赛之青岛
日期:2019-05-16 10:14:082016科比退役纪念章
日期:2019-01-11 14:44:062016科比退役纪念章
日期:2018-07-18 16:17:4015-16赛季CBA联赛之上海
日期:2017-08-22 18:18:5515-16赛季CBA联赛之江苏
日期:2017-08-04 17:00:4715-16赛季CBA联赛之佛山
日期:2017-02-20 18:21:13
17 [报告]
发表于 2008-11-19 09:06 |只看该作者

回复 #16 hellioncu 的帖子

可能楼主是高中时候注册的 ~

论坛徽章:
0
18 [报告]
发表于 2008-11-19 10:36 |只看该作者
我以前复制嗨了,还弄出过那样的代码呢:

  1. int a[5];
  2. for(int i=0; i<20; i++)
  3. {
  4.     a[i] = i;
  5. }
复制代码

    结果gcc不报警,valgrind也不报警,可程过了这里后老出莫名其妙的错误,时而段错误时而结构体数据乱七八糟(我那个程序总共有两千来行),最后拿放大镜找了一天找到后有自杀的冲动。

论坛徽章:
0
19 [报告]
发表于 2008-11-19 11:42 |只看该作者
数组越界了,或者说溢出了,天知道什么时候就会出错

论坛徽章:
0
20 [报告]
发表于 2008-11-19 11:55 |只看该作者
C的标准库都经历了几十年了,为什么没做一些改进?挺纳闷的,怪不得很多C面试题都喜欢考如何写strcpy,在生产环境如果用这些库看来得非常谨慎。
另外,我以前从来没做过什么开发,现在工作需要所以要写一些C的网络工具。所以我水平很低的,应该还算是初学者,2003年注册ID后就没发过什么帖子,大家多多指教。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP