「ある特殊なヒープ」ですが、システムによってメモリコンパクションが起こるのです。
メモリ割り当て関数で返されるのはヒープのハンドルで、
使用時には毎回それをデリファレンスして現在の本当のアドレスを得る必要があります。

最初はスマートポインタで簡単に解決できる問題だと思ったのですが、
ヒープ上に割り当てられたオブジェクトのメンバ変数のアドレスさえも、
コンパクションが起こることを想定していない別の関数に引き渡すことができないことに気づき、
そのヒープ上に割り当てるオブジェクトはすべて特殊なクラスとして設計する必要があると判断し、
まずは共通のベースクラス(インターフェイス)を、と思ったのですが
適切な名前が思い浮かびませんでした。

よろしくお願いします。