omig0001 2021-05-21 10:59 采纳率: 84.1%
浏览 29
已采纳

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;
  • 写回答

2条回答 默认 最新

  • 秋杪 2021-05-21 13:56
    关注

    第二段代码能拷贝成功吗?char c指针没有初始化,这样使用要么是空的,要么是个随机值,strcpy会返回null吧。

    第一段代码倒是可以,但是你用new申请了堆空间,使用结束后需要用delete[] 释放并赋值null,不然会有内存泄漏。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况
  • ¥15 画两个图 python或R