2017-02-05 8 views
0

ポインタにはいくつの値/スペースを割り当てることができます。可能な割り当ての総数を見つける方法はありますか?Cのポインタメモリの範囲は何ですか

+0

原則として、オブジェクトのオブジェクト表現における2つの 'char'ポインタの違いは、' ptrdiff_t'によって表現可能でなければなりません。したがって、あなたには上限が与えられます。しかし、それは現代のシステムの現実的な限界ではないでしょう。 –

+0

1つの変数にどれだけのメモリが保持できるか尋ねていますか?または、どのくらいのメモリが一般に利用可能ですか? – user2896976

+0

はい構成に依存します。それを計算する方法はありますか? – BhaveshSGupta

答えて

2

私が知る限り、NULLの値( "0"、必ずしもすべてゼロビットではない)だけがCで予約されているので、残りのポインタ型の数値空間値はすべて有効なポインタアドレスですC言語は関係していますが、特定のプラットフォームでは、利用可能なメモリスペース(たとえば、メモリマップされたIOなど)を減らす多くの追加ルールが適用されます。

(実際の32ビットプログラミングのようなフラットなメモリ空間については、私はあなたがnearfarポインタとあらゆる種類のポインタを持つ16ビットプログラミングの時代とは異なることに注意してくださいメモリハック)。 (あなたがIMAGE_FILE_LARGE_ADDRESS_AWAREフラグを指定しない限り)は、Windowsの32ビットポインタの上位ビットは予約されているため、代わりに4GiBの32ビットWindows the user-process address space is 2 GiB0x7FFFFFFF0x000000)に、私の「特定のプラットフォーム」のノートに拡大

割り当ての総数(1バイトバッファを何回割り当てることができますか)は、各割り当てにスペースオーバーヘッドがあるため、アロケータと親OSの実装に依存しますアロケータを実装する方法はさまざまですが、構造やアルゴリズムは異なります)、一般的な記述はできません。

+0

その他の注意事項は、すべての文字以外の種類(および一部の文字種)の埋め込みと配置の要件です。 – Sebivor

関連する問題