c++ 字符数字 new

以下两段代码有什么区别?

    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,不然会有内存泄漏。

上面申请了一段堆空间,需要用户主动释放;下面申请了一段栈空间,不需要用户主动释放