C言語関係掲示板

過去ログ

No.447.アドレス0x200000の値を配列の長さに指定

[戻る] [ホームページ]
No.3190

配列の長さ
投稿者---やまだ。(2002/10/28 21:58:46)


はじめまして。やまだ。と申します。
アドレス0x200000に書かれている値を配列の長さにしたいのですが、どうすればよいのでしょうか?配列(配列名:pat[])はグローバル変数です。
とりあえず、以下に私の考えた方法を書きます。
配列の[]の中には、定数式しか認められていないので、配列を使うことは諦めて、ポインタを使うことにしました。

int *q = (int *)0x200000;
unsigned char *pat = (unsigned char *)malloc(*q);

↑これでよいのでしょうか?
また、ふと思ったのですが、malloc関数で確保された領域というのは、連続したメモリ上にあるのでしょうか?
連続していないと、pat++; なんてやると、とんでもないことになりそうで心配になってしまいました。
初心者なので、わけのわからない事を書いてしまっていたら、すみません。
どなたか助けてやってください。
よろしくお願いします。






No.3220

Re:配列の長さ
投稿者---かずま(2002/10/29 22:16:08)


> int *q = (int *)0x200000;
> unsigned char *pat = (unsigned char *)malloc(*q);
>
> ↑これでよいのでしょうか?

はい、問題ありません。


> また、ふと思ったのですが、malloc関数で確保された領域というのは、
> 連続したメモリ上にあるのでしょうか?

はい、連続しています。


> 初心者なので、わけのわからない事を書いてしまっていたら、すみません。

いえ、初心者とは思えないくらい、よく理解されているようです。
ただ、初心者が アドレス 0x200000 を直接参照するようなプログラムを
書くということに驚いています。組み込みシステムのプログラム、または
OS のドライバでもお書きになっているんでしょうか。

No.3248

Re:配列の長さ
投稿者---やまだ。(2002/10/30 20:15:14)


かずま様

ご回答ありがとうございました。

>ただ、初心者が アドレス 0x200000 を直接参照するようなプログラムを
>書くということに驚いています。組み込みシステムのプログラム、または
>OS のドライバでもお書きになっているんでしょうか。

いえいえ。とんでもございません。
私は、マイコンのプログラムを書いていて、外付けROMの番地が0x200000なのです。
まだまだ、わからない事だらけです。またここで質問させて頂ければと思っています。
そのときは、どうかどうか、よろしくお願いします。
本当にありがとうございました。