私の問題:
オブジェクトに関する追加情報をオブジェクトへのポインターにエンコードする必要があります。私ができると思ったのは、ポインターの一部を使用してそうすることです。つまり、bool フラグをエンコードする数ビットを使用します。私の知る限り、同じことが Windows カーネルの特定の種類のハンドルで行われます。
バックグラウンド:
未使用のオブジェクトをガベージ コレクションできる小さなメモリ管理システムを作成しています。オブジェクト参照のメモリ消費を減らし、コピーを高速化するために、オブジェクトの状態 (生きているか、収集する準備ができているか)、ロック ビット、および単一のビットで表すことができる同様のものなど、追加のエンコードされたデータと共にポインターを使用したいと考えています。
私の質問:
ポインターの重要なビットを実際に上書きせずに、そのような情報を 64 ビット ポインターにエンコードするにはどうすればよいですか?
x64 Windows はアドレス空間が限られているため、ポインターの 64 ビットすべてが使用されるとは限らないため、可能であると考えています。ただし、ウィンドウが実際にポインターに使用するビットと使用しないビットを見つけることができませんでした。明確にするために、この質問は 64 ビット Windows のユーザーモードに関するものです。
前もって感謝します。