私がnew
(またはmalloc)を実行しているときにC++で、戻り値が特定の値よりも大きくなるという保証はありませんか?なぜなら...このプロジェクトでは、enumとして0-1kを使用することは非常に便利だと分かります。しかし、その価値を低くすることが可能なら、私はそれをしたくありません。私の唯一のターゲットシステムは、OSウィンドウ/ linuxとmacを持つ32または64ビットのCPUです。ポインタはある値以上になることが保証されていますか?
標準ではポインタに関することは何ですか?ウィンドウやLinuxは、CランタイムとRAMの最小メモリアドレスについて何か言いますか?
-edit-最終的に私のnew
オーバーロードがアドレスが> 1kを超えているかどうかを確認するように変更しました。私はstd :: terminateを呼び出します。
なぜenumをポインタとして使用していますか? – Pubby
@Pubby:(特にインタプリタやゲームでは)プラットフォーム固有のポインタの特性に依存して、通常は間接を排除するために余分な情報を入れるのが一般的です。アラインメントルールのため、下位3ビットは空きです。さらに、64ビットシステムでは一般に、有効ビット数が48のユーザー空間ポインタしかありません。残りは '1'または' 0'なので、 'double'の(53ビット)仮数に' NaN'を表すように上位ビットを設定してポインタをパックすることができます。次に、低次フラグを使用すると、マスキングとシフトを使用して表現をすばやく選択できます。 –
私は最初の1または4k:を必要としないので、私は6ビットしか必要ではないようです。 –