zoukankan      html  css  js  c++  java
  • C++ new大小为零的数组

    在实现队列数据结构时,由于自己马虎出现了一个“堆破坏”的错误——其实就是new大小为零的数组了。

    症状:new后仍然能返回一个正常地址,并且对于该地址进行操作(入队列、出队列)均未出现问题。但是最后删除却报出堆破坏问题。

    原因:size不小心写成了m_size。对于数组,清楚地知道其大小不能为零,但是对于动态分配时却不是很了解。这个问题最终也让自己又学到了知识。

    部分源代码:
    template<typename T>
    class MyQueue
    {
    public:
    MyQueue( size_t size = MinSize );
    ~MyQueue();
    void push_back( T & e );
    void pop_front();
    size_t size();
    T &front();
    T &back();
    bool isempty();
    bool isfull();
    protected:
    private:
    const static size_t MinSize = 20;
    size_t m_capacity;
    size_t m_size;
    size_t m_front;
    size_t m_rear;
    T *m_elem;
    };
    template<typename T>
    MyQueue<T>::MyQueue( size_t size )
    {
    if( size < MinSize )
    size = MinSize;
    m_capacity = size;
    m_size = 0;
    m_front = 0;
    m_rear = -1;
    /* Error: 分配大小为零的数组,正确写法:new T[size] */
    m_elem = new T[m_size];
    }
  • 相关阅读:
    CSS3学习笔记
    ie6对hover兼容性问题的解决:
    Maven-- 操作指南
    java基础 -- json多层转换成对象
    idea 导入maven项目
    工具的使用与安装--JAVA 环境变量的配置
    FreeMarker语言
    Apache Shiro 安全框架
    java基础--内部类
    java框架--Model层框架 sorm
  • 原文地址:https://www.cnblogs.com/miraclecoder/p/4051172.html
Copyright © 2011-2022 走看看