【发布时间】:2015-11-12 02:59:34
【问题描述】:
我有如下代码,不知道str2和str3的实现有什么区别,都给出相同的结果,哪个更容易出错?
编辑:当我测试str2 的表示时,我发现有一次我的代码崩溃了,因为str2 是一个错误的指针!
/* strcpy example */
#include <stdio.h>
#include <string.h>
int main ()
{
char str1[] = "Sample string";
char str0[] = "Sample String and more";
char* str2;
str2 = new char[40];
char str3[40];
strcpy (str2,str1);
strcpy (str3,str1);
strcpy (str2,str0);// crash happened here str2 is bad pointer!!!
printf ("str1: %s\nstr2: %s\nstr3: %s\n",str1,str2,str3);
delete str2;
return 0;
}
【问题讨论】:
-
定义“更容易出错”。
-
str2更容易出错(例如,在这种情况下你忘了delete它),并且可能更慢 -
请标记为 C++ 而不是 C , str2 = new char[40];不是C
-
这不是 c 它是 c++。
-
我猜你刚刚用你的编辑回答了你自己的问题:-)