关于C++字符串

原创 2005年05月16日 19:53:00
昨天跟同学一起看一个C++编译错误。
代码是这样的(简化后):
int main()
{
   char* buff = new char[6];
   strcpy(buff, "123456");
   delete[] buff;
}
程序在Debug模式下运行出错,提示非法访问内存。Release没事。
我把代码改成这样:
int main()
{
   char* buff = new char[6];
   for (int i=0; i<6; i++)
   {
      buff[i] = i + 48;   // 数字转化成对应的字符
   }
   delete[] buff;
}
程序运行正常。。。
就是说在strcpy里除了附值外他肯定还干了什么。于是想到字符串结尾"/0",他肯定是在后面自动加一个0然后内存溢出边界了。
原来的改成:
int main()
{
   char* buff = new char[7];
   strcpy(buff, "123456");
   delete[] buff;
}
OK,一切正常了!

希望明天是个艳阳天。。。

相关文章推荐

C++逆向输出字符串

  • 2017年07月20日 16:52
  • 467B
  • 下载

c++ 字符串读写

  • 2017年09月19日 09:59
  • 1.75MB
  • 下载

C++中的几种字符串输入输出方法

c++中的字符串的几种输入与输出
  • denao
  • denao
  • 2017年07月06日 11:59
  • 751

C/C++字符串函数之复制函数

突然发现对字符串函数缺乏系统的了解,所以花了一点时间专门整理下,在此记录之,以方便自己及有需要的人使用。 C/C++字符串函数的头文件:string.h 复制函数主要有4个,如下: ...
  • namecyf
  • namecyf
  • 2013年01月31日 11:01
  • 1330

C++ 文件及字符串

  • 2013年10月11日 22:30
  • 105KB
  • 下载

C++字符串和int的相互转换

转载自:http://www.cnblogs.com/nzbbody/p/3504199.html int本身也要用一串字符表示,前后没有双引号,告诉编译器把它当作一个数解释。缺省情况下,是当成10...

c++字符串的各种操作

  • 2014年05月15日 15:58
  • 16KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于C++字符串
举报原因:
原因补充:

(最多只允许输入30个字)