我需要在 operator delete 中获取被销毁对象的大小,但我只有一个 void 指针。 (void operator delete(void*)
)
有什么方法可以访问这些信息吗?这不需要是可移植解决方案;我只关心 Linux 上的 gcc。)
最佳答案
您可以根据基础分配的大小选择在 operator new
中的特定位置进行分配。 operator delete
然后根据指针的值知道要释放多少。
因此,指针的值满足了 new 的“将数据存储在某处”的要求。
例如对于1个字的分配,分配在0x10000000和0x1000FFFF之间,2个字在0x10010000和0x1001FFFF之间,等等
如果范围已用完,您总是可以抛出 bad_alloc
,或者在该范围内分配更大的数量
关于c++ - 预加载运算符删除释放大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43679068/