加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读