new的用法感想

小白感想:

今天写个代码,运行到析构函数出了这个问题:

 上网查了一下,根据这篇博客https://blog.csdn.net/a2806005024/article/details/37757037的指示,知道可能是内存越界操作了。

看看自己构造函数分配的空间:

原来如此,原本是要从堆区分配一个数组,谁料自己写错,只有一个T类型的空间,存储内容为capacity的值,真逊。

改变一下

就可以了。

主要是 new int(5) 和 new int[5]的区别:

1.前者从堆上分配一个int 类型所占大小的内存,用来存储5,后者用来开辟一个5个int 类型所占大小的数组。

2.前者释放用delete ptr ,后者释放用 delete [] ptr ,不可省略[] 否则只会释放首部的那个元素了。

参考:https://blog.csdn.net/lixingshi/article/details/22432035 

原文地址:https://www.cnblogs.com/zcs2020/p/13044057.html