c++ - 预加载运算符删除释放大小

标签 c++ linux gcc

我需要在 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/

相关文章:

c++ - fprintf 不写入管道

c++ - 模拟基数/底数为 36 的 ulltoa()

c - C语言多线程服务器设计

linux - 如何启动这段代码?

c - memcpy 调用中的内存错误

c++ - 在 C++ 中共享文件夹中的函数

c++ - 如何访问 HashMap 中键的值

python - 全局安装 Python-docx 的正确位置

c++ - 如何在 linux 上获取在 "black box"中创建的线程数?

c - GCC 在启用优化的情况下给出了错误的答案