结构C 的内存分配和交易

memory allocation and deallocation of struct c++

本文关键字:交易 分配 内存 结构      更新时间:2023-10-16
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];
        }
    }
};

我不确定是否正确实现了删除函数。您能解释一下我是否正在使用delete []并正确删除?

如果您坚持手动处理内存而不是使用适当的容器类,则需要修复新/删除。您拥有的每个new呼叫都在数组表格new ...[]中,因此每个delete应为delete[],但是您在循环中使用没有[]delete