一心只想AC 2023-06-09 15:30 采纳率: 74.6%
浏览 34
已结题

c++关于new的小问题

今天写代码时遇见了一个问题,我写出了如下代码

list* p = new list;
............................
.............................
list* p = new list;

后来第二条改为p = new list;就好了。
我想知道第一种为什么不对,第一种会导致什么情况?第二条重新定义p时第一个new出的空间会释放吗?当时我输出的内容好像变成乱码了(用的链表)。

  • 写回答

3条回答 默认 最新

  • RivaJ 2023-06-09 15:49
    关注

    同一个定义域内怎么可能声明p两次呢?你居然还能输出乱码,说明是在不同嵌套的定义域内声明了一个新的p
    所以后续要操作外层定义域的p,变成了操作新定义的p,于是链表断了,出现乱码
    请叫我福尔摩斯
    另外,不显式地释放new出来的对象,是不会自动释放的

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

报告相同问题?

问题事件

  • 系统已结题 6月17日
  • 已采纳回答 6月9日
  • 创建了问题 6月9日