以下两段代码有什么区别?
char *c = new char[20];
string s = "1234";
// c_str()返回一个客户程序可读不可改的指向字符数组的指针,不需要手动释放或删除这个指针。
strcpy(c,s.c_str());
cout<<c<<endl;
char *c ;
string s = "1234";
// c_str()返回一个客户程序可读不可改的指向字符数组的指针,不需要手动释放或删除这个指针。
strcpy(c,s.c_str());
cout<<c<<endl;
第二段代码能拷贝成功吗?char c指针没有初始化,这样使用要么是空的,要么是个随机值,strcpy会返回null吧。
第一段代码倒是可以,但是你用new申请了堆空间,使用结束后需要用delete[] 释放并赋值null,不然会有内存泄漏。
上面申请了一段堆空间,需要用户主动释放;下面申请了一段栈空间,不需要用户主动释放