我需要在运算符delete中获取对象的大小,但我所拥有的只是一个void指针。 (void operator delete(void*)
)
有没有办法获取这些信息?这不是一个便携式解决方案;我只关心Linux上的gcc。)
答案 0 :(得分:0)
您可以根据基础分配的大小选择在operator new
中的特定位置进行分配。 operator delete
然后根据指针的值知道要释放多少。
因此"将数据存储在某个地方"指针的值满足了new的要求。
E.g。对于1个字的分配,在0x10000000和0x1000FFFF之间分配,在0x10010000和0x1001FFFF之间分配2个字
如果范围用完了,您可以随时throw bad_alloc
,或者在该数量的范围内分配更多的金额