CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

strcpy 能增容吗?

楼主96091103(室长)2002-05-30 10:19:53 在 C/C++ / C语言 提问

请问,为什么第一段代码能执行通过,而没有出现第二段代码产生的编译错误:"array   bounds   overflow"。  
  (以下均在VC6,Win98下编译)  
   
  //////////代码1//////////  
   
  #include   <iostream.h>  
  #include   <string.h>  
   
  void   main()  
  {  
  char   name[1];  
  strcpy(name,"abcd");  
  cout   <<   name   <<"\n";  
  }  
   
  //////////代码2//////////  
   
  #include   <iostream.h>  
  #include   <string.h>  
   
  void   main()  
  {  
  char   name[1]="abcd";  
  cout   <<   name   <<"\n";  
  }  
  问题点数:50、回复次数:8Top

1 楼AdvRom(蓝色森林)回复于 2002-05-30 10:28:49 得分 20

C/C++里面指针是自由的,第一段代码执行期会出问题,编译器不可能太聪明,它检查不出来你在运行期可能产生的错误。  
  第二段就非常显然了,第一行代码编译器就能够判定出错另外。Top

2 楼kof99th(小虫)回复于 2002-05-30 10:31:34 得分 10

strcpy不检查数组越界问题,你可以在   vc的光盘上\vc98\crt\src\下找到strcpy.c文件,看一下原码就明白了。Top

3 楼96091103(室长)回复于 2002-05-30 10:33:29 得分 0

To   楼上的兄弟  
   
  第一段代码能够执行,没出现任何问题。Top

4 楼AdvRom(蓝色森林)回复于 2002-05-30 10:37:11 得分 0

什么叫没有出现任何问题?是指这个程序没有被操作系统强行关闭吗?  
  内存泄露、资源不释放、缓冲区越界等都是不会立刻出错的问题Top

5 楼96091103(室长)回复于 2002-05-30 10:43:53 得分 0

为什么strcpy(name,"abcde");会立刻出现强行关闭。  
  而strcpy(name,"abcd");不会。  
   
  Top

6 楼HostOOP(碧云黄花)回复于 2002-05-30 10:45:03 得分 10

strcpy确实不会检查内存越界的问题,但我们不提倡这种用法。运行时候不出问题纯属侥幸。Top

7 楼liushmh(想开书店:) )回复于 2002-05-30 10:45:24 得分 10

编译器肯定要检查语法,语义,规则等,   第二段代码的数组越界,自然要报错,二第一段代码,调用了库函数,编译器可能只发现了类型匹配,而不会具体检查  
  毕竟strcpy的参数原型是两个字符串指针。Top

8 楼96091103(室长)回复于 2002-05-30 10:51:12 得分 0

OKOKTop

相关问题

  • memcpy and strcpy
  • (好消息……)国家全面整顿务工人员收费 取消暂住费城市增容费,nnd爽!
  • 关于strcpy?
  • strcpy的问题:
  • strcpy()非法操作
  • 关于new和strcpy
  • 问一个strcpy()的
  • 求助:strcpy问题
  • 也是strcpy的问题
  • strcpy是什么意思:(

关键词

  • 代码
  • strcpy
  • abcd
  • cout
  • include void main
  • char name

得分解答快速导航

  • 帖主:96091103
  • AdvRom
  • kof99th
  • HostOOP
  • liushmh

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo