访问传递给 new[] C++ 的数字

Accessing the number passed into new[] c++

我正在实施自定义内存分配过程,并在全局范围内覆盖 new、new[] 和 delete、delete[]。 内存分配采用对象的大小和一个可选的 'nObjects' 参数,其中它是要创建的对象的数量(默认为 1)。

new 工作正常,但是对于 new[],size_t 值只是 returns nObjects*sizeOfObject 的总值。所以我无法知道实际分配的对象数量,只有大小。

我查看了程序集,对象的数量肯定在那里,正在传递,但我的问题是:在全局 new[] 覆盖范围内是否有安全的方法来访问它?

谢谢。

编辑:

顺便说一句,我正在创建自定义分配,以便使用它创建的任何其他 class 不需要做任何额外的事情来说明内存分配。例如。我可以创建 class whatever{} 并分配它,我不需要从任何东西派生它或在它的 constructor/destructor.

中添加任何额外的东西

我这样做的原因是因为我无法控制 new 的一些外部用途,除了在全局 new 覆盖中。

Is there a safe way to access it within the scope of the global new[] override?

没有这样的方式。

new operators 只是内存分配函数,它们只获取需要分配的字节数(就像 malloc)。

这是new expression接受对象的数量,调用operator new(你可以重载)然后调用构造函数。 新表达式不能重载。