小白感想:
今天写个代码,运行到析构函数出了这个问题:
上网查了一下,根据这篇博客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