2012-05-11 10 views
3

これは非常に基本的な質問のようなものです。私は空の型のポインタのメモリに何があるのか​​を知りたかっただけです。空ポインタのメモリ

本当に助けてください。ありがとう!

答えて

7

voidポインタは、メモリ内のアドレスを提供して値だけです。 voidポインターによって実際に指し示されているものは、それ以上の情報なしには判別できません。

voidポインタによって占められるメモリ内にあるものとしては、それが(ようにと。)、64ビットアーキテクチャ上で32ビットアーキテクチャ上で32ビット値と64ビット値になり

解釈この値は、基礎となるアーキテクチャとメモリアドレッシングの実装方法に大きく依存します。

+0

良い点@SteveJessop、私はそれに応じて答えを更新しました。 – Nick

+0

"voidポインタが実際に指しているもの"は、* void *には値がないので決めることはできません。しかしながら、この特定のメモリアドレスにおける内容を決定するために、例えば 'unsigned char 'への' void'ポインタをキャストするかもしれません。メモリアドレスの内容を持つことは、値を持つことを意味しないことに注意してください。 – Philip

+0

これは 'struct'であることが分かっていると、指されているメモリが' struct'であることがわかります。それでなぜ私は 'さらなる情報なし'と言ったのですか?さらに詳しい情報があれば、何が指摘されているのかを完全に知ることができます! – Nick

0

ポインタはメモリアドレスであるので、それはそれがvoidポインタやオブジェクトのポインタですか同じになります...

0

voidは、値のない型です。

したがって、void *fooをお持ちの場合、Cは*fooを読み込むことはできませんが、値を割り当てることはできません。

したがって、あなたの質問に対する答えは、voidポインターで指しているものの値を見つけることができません。 voidポインターを他の型にキャストしなければなりません。新しいポインターが指すアドレスの値は、その型に従って解釈されます。

0

実際にはポインタでもあるので、サイズは普通のポインタと同じでなければなりません。

関連する問題