我很好奇是否可以重载“ref new”运算符以从我选择的堆中分配内存。我正在寻找一个库,允许用户指示我的库将动态分配的最大内存量。在内部,我计划使用 HeapCreate 和 HeapAlloc 使用用户提供的最大大小来定义我自己的堆。然后,如果我的任何内部内存分配超过了最大分配内存,我将优雅地失败。如果我有一个返回“ref 类”(如 Platform::String^)的 API,就会出现问题。一旦我使用“ref new”运算符,我就无法控制内存来自什么堆,我可能会违反与用户的合同。
有没有办法重载“ref new”运算符以从我自己的堆中分配,或者以其他方式跟踪我的库(或 DLL)用“ref new”分配了多少内存,以确保我不会违反合同我的用户?