operator new []参数值

时间:2017-12-15 15:50:11

标签: c++ overloading operator-keyword

当我的类具有析构函数并且没有时,我发现operator new []的参数值之间存在差异。 请参阅下一个代码:

class A
{
public: 
    ~A()
    {
    }

    void *operator new (size_t size)
    {
        return malloc(size);
    }

    void operator delete (void *p)
    {
        free(p);
    }

    void *operator new[] (size_t size)
    {
        return malloc(size);
    }

    void operator delete[] (void *p)
    {
        free(p);
    }

    void *operator new(size_t size, void *p)
    {
        return p;
    }

private:
    int m_a;
};

int main()
{
    size_t size = 50;
    A *p_a = new A[size];
    delete[] p_a;
}

我已经使用注释和未注释的Destructor定义对此代码进行了详细说明。 在第一种情况下,尺寸值为200 在第二种情况下,尺寸值为204

我一直都知道我们为数组分配了更多内存,以获得有关数组大小的知识。但我不知道开销内存取决于析构函数的存在。

我的意思是,如果编译器不需要通过内存块进行迭代并调用析构函数,那么编译器就不需要额外的内存。

如果有人对标准有任何其他想法或参考,请给我:)

0 个答案:

没有答案