c++ - 是否有可能获得由 'new' 分配的内存块大小?

标签 c++ windows winapi memory-management c++builder

你好,我需要记录我的堆,但现在我只想用我的函数重载"new"运算符。

我需要总结在 malloc() 或 Heap*() 或其他 windows mem* 函数之后增加的内存的实际字节数

但现在我需要分析当前的堆实现。是否有可能获得像 HeapAlloc() 函数分配的 block 大小 - HeapSize() ?

.

最佳答案

我看你没有搜索文档。

HeapSize() exists.


编辑 回想起来,也许您正在寻求 HeapSize()替代方案,您可以在使用

答案是否定的。标准分配例程没有任何关于内存块的信息,因为:

  • 这高度依赖于实现,并且
  • 您已经知道 block 大小(因为您首先指定了它),那么膨胀的意义何在?

事实上,HeapSize() Windows 的执行相关函数,但您只能在执行 HeapAlloc() 时使用它

还有[非标准] _msize 可以与 malloc 和 friend 一起使用,但是 new 可能不会使用 malloc

因此我建议您自己在分配器中跟踪大小。

关于c++ - 是否有可能获得由 'new' 分配的内存块大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5842296/

相关文章:

winapi - 如何以编程方式选择 Win32 API 按钮?

c++ - "explicit"关键字对默认构造函数有影响吗?

c++ - 为什么**不**将函数声明为 `constexpr` ?

C++:基函数的变化(即十六进制到八进制、十进制等)- 十六进制值的输出略有偏差

windows - CMD变量替换参数

c - Windows 创建窗口 API

c++ - CS_HREDRAW | CS_VREDRAW 有什么作用?

c++ - 如果我过早获得窗口句柄,控制台窗口会出现问题……?

c++ - 为什么 Windows Visual Studio 会损坏 C 样式字符串而 Linux 不会?

c++ - 改变整个屏幕像素的颜色