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 を使用して独自のヒープを作成することはできません。Windows ストア アプリは、プロセス ヒープ (GetProcessHeap) にのみアクセスできます。

于 2013-03-25T02:13:27.517 に答える