c++关于new的小问题

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

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

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

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

new是在堆里面的不会自动释放 要自己delete释放

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^