0

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

有没有办法重载“ref new”运算符以从我自己的堆中分配,或者以其他方式跟踪我的库(或 DLL)用“ref new”分配了多少内存,以确保我不会违反合同我的用户?

4

1 回答 1

0

Visual Studio 2012 C++ 编译器中目前没有允许您重载“ref new”运算符的扩展点。

此外,您提议的实现无法使用 HeapAlloc/HeapFree 创建自己的堆,因为这将无法通过 Store 认证。Windows 应用商店应用只能访问进程堆 (GetProcessHeap)。

于 2013-03-25T02:13:27.517 回答