高校三年生の合唱祭で何を歌いましたか?

ポインタに設定されるメモリアドレスの範囲は、
どのようにすれば知る事が出来るでしょうか?

関数への入力でポインタのアドレス範囲を超える
ものがあれば検知したいのですが、見当がつきません…。

コンパイラはcygwinのgcc 3.4.4です。
宜しくお願いします。

A 回答 (2件)

「ポインタとして有効なアドレスの範囲」を知る一般的な方法は存在しません.


ちなみに NULL ポインタは整定数 0 で表されますが, これは「0 番地」を意味するわけではありません. アドレスとして 0 番地が有効であったとしても, ポインタ変数に整定数 0 を代入するとそのポインタ変数の値は NULL ポインタと等しくなります.
    • good
    • 0
この回答へのお礼

なるほど、一般的な方法は無かったんですね。
NULLポインタはよく理解していなかったようです、
それと0番地が有効な事もあるんですね。

この辺りの事はやっぱりCを勉強してるだけじゃ理解が出来ない
というか想像が出来ないですね。
アセンブラをやるとわかるとは聞きますが。

ともかく、ありがとうございました。

お礼日時:2006/12/08 00:00

"ポインタのアドレス範囲"というのが何を指しているのかわかりませんが、


何かの型の配列の先頭アドレスを関数へ入力したと仮定すると

>ポインタに設定されるメモリアドレスの範囲は、
>どのようにすれば知る事が出来るでしょうか?
出来ません。
配列要素数を引数として渡してあげてください。
    • good
    • 0
この回答へのお礼

ありがとうございます。
ポインタのアドレス範囲というのはよくよく考えると分かりにくい(変な)表現でした。
変数宣言時などにメモリを確保していますが、この確保するメモリアドレスのうち
アドレスとして有効な範囲を知る事は出来るでしょうか?
例えば0(ゼロ)番のアドレスは存在しないので割り当てられないとか。

お礼日時:2006/12/07 22:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報