• ベストアンサー

メモリをたくさん使うテストプログラム

Linuxで、メモリをたくさん使うようなテストプログラムを作りたいのです。 メモリといっても、プログラムコードの入っているテキスト領域、データの入っているデータ領域、ヒープ領域などがあると思いますが、 これらのいずれかのみをたくさん使うようなプログラムを作りたいのです。 例えば、サイズの大きなプログラムであれば、テキスト領域が大きくなったり、 大容量の文字列を扱ったりすると、データ領域が大きくなったりするんでしょうか? 関数とメモリ使用量の関係があまり分かっていません。 どうか教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.2

#1です。 >テキスト領域を大量に確保するには、無駄に長いプログラムを書けばいいのでしょうか? はい、その通りです。 >mallocした領域にデータを書き込むと、今度はデータ領域がたくさん使われるのでしょうか? いいえ、mallocした領域は、ヒープ領域であり、ヒープ領域にデータを書き込んだからといって、データ領域が増える訳ではありません。 コーディングでは、以下のようになります。 ----------------- #include ....ヘッダファイル char data1[256];  ・・・・データ領域 main() { data data2[256];  ・・・・スタック領域 if (・・・){    ・・・・テキスト領域 ・・・ } malloc(3000)    ・・・ヒープ領域へ確保 } main等の関数の外側で確保した領域は、データ領域に取られます。 main等の関数の内側で確保した領域は、スタック領域に取られます。(static指定を除く) 実際に命令(if文など)は、テキスト領域にとられます。 mallocで確保したメモリはヒープ領域に取られます。 (但し、テキスト領域の言葉は正しいかどうか不明です。参考URLを参照下さい) ところで、どうして、メモリをたくさん使うようなテストプログラムを作りたいのですか、よかったら教えて下さい。そのほうに興味があります。

参考URL:
http://www1.cts.ne.jp/~clab/hsample/Point/Point19.html
tg627
質問者

お礼

大学の研究です。 Linuxの限界時のパフォーマンスをシミュレーションするつもりです。 詳しい解説&参考URLありがとうございました。 大変参考になりました。

その他の回答 (2)

  • terra5
  • ベストアンサー率34% (574/1662)
回答No.3

アセンブラで.text, .data, .bss等の各セクションにテーブルを配置させれば簡単にできると思いますが、 C,C++じゃないからだめですか?

tg627
質問者

お礼

すみません。 私、アセンブラは書けないんです。 でも、アドバイスありがとうございました。

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.1

1つの例として、malloc関数を使用する方法があります。 mallocは、指定されたサイズ分のメモリをヒープ領域に確保します。mallocで指定するサイズ(=確保するメモリサイズ)を非常に大きな値にすれば、たくさんのメモリを消費するプログラムが作成できます。詳細は、man mallocで調べて下さい。

tg627
質問者

お礼

mallocを使うとヒープ領域がたくさん確保できるのですね。ありがとうございます。 テキスト領域を大量に確保するには、無駄に長いプログラムを書けばいいのでしょうか? また、mallocした領域にデータを書き込むと、今度はデータ領域がたくさん使われるのでしょうか?

関連するQ&A

専門家に質問してみよう