c – 删除大小为1的数组
发布时间:2020-12-16 10:54:28 所属栏目:百科 来源:网络整理
导读:这可能是单行答案的候选人.无论如何我想知道.. 我正在编写一个简单的循环缓冲区,由于某些原因,这对于我需要使用双精度数组实现它的问题并不重要.事实上,我没有研究其他方法,但是因为无论如何都需要阵列,所以我没有花太多时间寻找替代方案. templatetypename
这可能是单行答案的候选人.无论如何我想知道..
我正在编写一个简单的循环缓冲区,由于某些原因,这对于我需要使用双精度数组实现它的问题并不重要.事实上,我没有研究其他方法,但是因为无论如何都需要阵列,所以我没有花太多时间寻找替代方案. template<typename T> class CircularBuffer { public: CircularBuffer(unsigned int size); ~CircularBuffer(); void Resize(unsigned int new_size); ... private: T* buffer; unsigned int buffer_size; }; 由于我需要动态调整缓冲区大小,因此buffer_size既不是const也不是模板参数.现在的问题是: 在构造和函数Resize(int)期间,我只要求大小至少为1,尽管大小为1的缓冲区实际上不再是缓冲区.当然,使用简单的双重替代会更合适,但无论如何. 现在当在析构函数中删除内部缓冲区时 – 或者在函数调整大小时 – 我需要删除分配的内存.问题是,怎么样?第一个候选人当然是删除[]缓冲区;但话又说回来,如果我已经分配了一个大小为1的缓冲区,那就是如果指针是用buffer = new T [0]获取的,是否仍然适合调用指针上的delete []或者我是否需要调用delete buffer ; (没有括号)? 谢谢, 解决方法
如果使用新的T [x]分配内存,则始终使用delete []删除它,即使x≤1.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |