アプリ版:「スタンプのみでお礼する」機能のリリースについて

mallocで確保するメモリの領域を限定する方法というものは存在するのでしょうか?

例えば、
mallocを使ってメモリを確保するときに、
アドレス:0x00001000から0x00002000の間でメモリを確保してください。

といった感じです。
宜しくお願いいたします。

A 回答 (5件)

特定アドレスのメモリを割り付けるのであれば、静的に割り付けるか、それに近い方法を取らざるをえません。


処理系に依存しない方法はありませんので、処理系を補足してください。

いずれにせよ、取りうる方法は限られています。
ひとつは、リンク時にアドレス指定で配列を割り付ける方法であり、もうひとつは(もし使えるのであれば)MMUを自分で制御して、該当アドレスに仮想メモリを配置する方法です。
ハードウェアの設計も自分でできる(能力的にも権限的にも)のであれば、もっと別の方法があるかもしれません。
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/03/08 21:55

自前でmallocを実装して標準関数の代わりに使う。


質問からはmallocで確保されるべき全てのメモリを一定範囲のアドレスにしたいのか、それとも呼出しごとにアドレス範囲を指定したいのか不明だが、後者なら範囲指定の追加引数を取る独自関数を作れば良い。前者はmallocを独自に作って標準関数の代わりにリンクすれば良いが、結構面倒かもしれない。
    • good
    • 0

mmap() の MAP_FIXED とかの話?

    • good
    • 0

C言語の仕様では不可能です。

特定のOS、コンパイラでは可能かもしれません。

> 実際にアドレス空間を割り当てるのは、コンパイラオプションとかリンカーの役目。
静的なメモリ割り当てはそうですが、mallocでのメモリ割り当てはランタイムの役割なので
コンパイラオプションやリンカーは関係ありません。
そもそも静的に割り当てられない(コンパイル時に決定できない)からmallocを使うのだと思うけど。
    • good
    • 0

出来ません。



実際にアドレス空間を割り当てるのは、コンパイラオプションとかリンカーの役目。
    • good
    • 0

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