预加载的运算符删除释放大小

时间:2017-04-28 11:24:27

标签: c++ linux gcc

我需要在运算符delete中获取对象的大小,但我所拥有的只是一个void指针。 (void operator delete(void*)

有没有办法获取这些信息?这不是一个便携式解决方案;我只关心Linux上的gcc。)

1 个答案:

答案 0 :(得分:0)

您可以根据基础分配的大小选择在operator new中的特定位置进行分配。 operator delete然后根据指针的值知道要释放多少。

因此"将数据存储在某个地方"指针的值满足了new的要求。

E.g。对于1个字的分配,在0x10000000和0x1000FFFF之间分配,在0x10010000和0x1001FFFF之间分配2个字

如果范围用完了,您可以随时throw bad_alloc,或者在该数量的范围内分配更多的金额