Strcpy不会复制已分配的字符数组
Strcpy does not copy an allocated character array
为什么这不起作用:
SomeClass::SomeClass(char *lit) //Ctor
{
str = new char[strlen(lit)+1]; // str is a pointer to char in SomeClass
strcpy(str,"have");
cout << str << " " << "In Ctor" << " +Size=" << strlen(str)<< endl;
}
上面的代码显示了一个长度为0的字符串。但这个代码有效:
SomeClass::SomeClass(char *lit)
{
char newstr[strlen(lit)+1];
strcpy(newstr,"have");
cout << newstr << " " << "In Ctor" << " +Size=" << strlen(newstr)<< endl;
}
这里是完整的代码。
编辑:
添加了Ideone的链接,OP在我回答问题后删除了该链接
没有链接到源代码,这个问答;对它的回答毫无用处。
strcpy
没有问题,您只是弄乱了指针。
问题就在这里:
str = new char[strlen(lit)+1];
strcpy(str,lit);
length=leng(); <------------- str points to after this call
cout << str << " " << "In Ctor" << " +Size=" << strlen(lit)<< endl;
str
是您的类成员,您将指针str
移动到函数leng()
中的