0
我很好奇,如果有可能重载“ref new”操作符来从我选择的堆中分配内存。我正在创建一个库,允许用户指出我的库将动态分配的最大内存量。在内部,我计划使用HeapCreate和HeapAlloc来定义我自己的堆,使用用户提供的最大尺寸。然后,如果我的内存分配超出了最大分配的内存,我将优雅地失败。问题来了,如果我有一个API返回一个“ref class”(如Platform :: String ^)。只要我使用“ref new”操作符,我就无法控制内存来了,我可能会违反我的用户合同。是否有可能重载“ref new”以从特定堆分配?
是否有任何方法来重载“ref new”操作符从我自己的堆中分配,或者跟踪我的库(或DLL)分配给“ref new”的内存量,以确保我不会与我的用户打破合同?
这是不可能的。它是COM的友好语法,它称为类工厂。内存由实现该类的模块拥有,并通过引用计数进行管理。 – 2013-03-24 00:06:46