struct c ++的内存分配和释放

时间:2014-03-14 13:16:06

标签: c++

struct SAD_tables
{
    typedef int** sadTable;
    sadTable sadTables[16];
    int height;
    int width;

    SAD_tables(int _height, int _width)
    {
        height = _height;
        width = _width;
        for (int i = 0; i < 16; i++)
        {
            sadTables[i] = new int*[height];
            for (int j = 0; j < height; j++)
            {
                sadTables[i][j] = new int[width];
            }
        }
    }

    ~SAD_tables()
    {       
        for (int i = 0; i < 16; i++)
        {
            for (int j = 0; j < height; j++)
            {
                delete sadTables[i][j];
            }
            delete[] sadTables[i];
        }
    }
};

我不确定我是否正确实施了删除功能。你可以解释我是否正在使用删除[]并正确删除?

1 个答案:

答案 0 :(得分:2)

如果您坚持手动处理内存而不是使用正确的容器类,则需要修复new / delete。您拥有的每个new来电都采用数组形式new ...[],因此每个delete都应为delete[],但您使用delete而不是[]环。