Windows runtime 有可能超载吗;参考“新”一词;要从特定堆进行分配?

Windows runtime 有可能超载吗;参考“新”一词;要从特定堆进行分配?,windows-runtime,Windows Runtime,我很好奇是否有可能重载“ref new”操作符来从我选择的堆中分配内存。我希望创建一个库,允许用户指示我的库动态分配的最大内存量。在内部,我计划使用HeapCreate和HeapAlloc来使用用户提供的最大大小定义自己的堆。然后,如果我的任何内存分配超过了分配的最大内存,我将正常地失败。如果我有一个返回“ref类”(如Platform::String^)的API,问题就会出现。一旦我使用“ref new”操作符,我就无法控制内存来自哪个堆,我可能会破坏与用户的合同 有没有办法重载“ref ne

我很好奇是否有可能重载“ref new”操作符来从我选择的堆中分配内存。我希望创建一个库,允许用户指示我的库动态分配的最大内存量。在内部,我计划使用HeapCreate和HeapAlloc来使用用户提供的最大大小定义自己的堆。然后,如果我的任何内存分配超过了分配的最大内存,我将正常地失败。如果我有一个返回“ref类”(如Platform::String^)的API,问题就会出现。一旦我使用“ref new”操作符,我就无法控制内存来自哪个堆,我可能会破坏与用户的合同


有没有办法重载“ref new”操作符以从我自己的堆中进行分配,或者跟踪我的库(或DLL)使用“ref new”分配了多少内存为了确保我不会违反我的用户的约定,

在VisualStudio 2012 C++编译器中目前没有扩展点允许你重载“REF新”操作符。
此外,您提议的实现无法使用HeapAlloc/HeapFree创建自己的堆,因为这将导致存储认证失败。Windows应用商店应用程序只能访问进程堆(GetProcessHeap)。

这是不可能的。它是COM上的友好语法,它调用类工厂。内存由实现类的模块拥有,并通过引用计数进行管理。