我正在实现自定义内存分配过程,并全局覆盖new,new []和delete,delete []。 内存分配采用对象的大小和可选的'nObjects'参数,其中包含要创建的对象数量(默认为1)。
new工作正常,但是使用new [] size_t值只返回nObjects * sizeOfObject的总值。所以我无法知道实际分配的对象数量,只知道大小。
我查看了程序集,对象的数量肯定存在,被传递,但我的问题是:是否有一种安全的方法可以在全局new []覆盖范围内访问它?
感谢。
编辑:
顺便说一句,我正在创建自定义分配,以便使用它创建的任何其他类不需要做任何额外的事情来计算内存分配。例如。我可以创建类{}并分配它,我不需要从任何东西派生它或在构造函数/析构函数中添加任何额外的东西。
我这样做的原因是对新的一些外部用途的说法太多了,除了在全局新覆盖之外我无法控制。
答案 0 :(得分:1)
是否有一种安全的方法可以在全局新[]覆盖范围内访问它?
没有这种方式。
new
operators只是内存分配函数,它们只获取需要分配的字节数(就像malloc
)。
这是new expression接受对象的数量,调用operator new
(你可以重载),然后调用构造函数。 新表达式不能重载。