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 

 

posted on 2020-06-04 15:59  zcs2020  阅读(76)  评论(1)    收藏  举报