- ベストアンサー
メモリをたくさん使うテストプログラム
Linuxで、メモリをたくさん使うようなテストプログラムを作りたいのです。 メモリといっても、プログラムコードの入っているテキスト領域、データの入っているデータ領域、ヒープ領域などがあると思いますが、 これらのいずれかのみをたくさん使うようなプログラムを作りたいのです。 例えば、サイズの大きなプログラムであれば、テキスト領域が大きくなったり、 大容量の文字列を扱ったりすると、データ領域が大きくなったりするんでしょうか? 関数とメモリ使用量の関係があまり分かっていません。 どうか教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#1です。 >テキスト領域を大量に確保するには、無駄に長いプログラムを書けばいいのでしょうか? はい、その通りです。 >mallocした領域にデータを書き込むと、今度はデータ領域がたくさん使われるのでしょうか? いいえ、mallocした領域は、ヒープ領域であり、ヒープ領域にデータを書き込んだからといって、データ領域が増える訳ではありません。 コーディングでは、以下のようになります。 ----------------- #include ....ヘッダファイル char data1[256]; ・・・・データ領域 main() { data data2[256]; ・・・・スタック領域 if (・・・){ ・・・・テキスト領域 ・・・ } malloc(3000) ・・・ヒープ領域へ確保 } main等の関数の外側で確保した領域は、データ領域に取られます。 main等の関数の内側で確保した領域は、スタック領域に取られます。(static指定を除く) 実際に命令(if文など)は、テキスト領域にとられます。 mallocで確保したメモリはヒープ領域に取られます。 (但し、テキスト領域の言葉は正しいかどうか不明です。参考URLを参照下さい) ところで、どうして、メモリをたくさん使うようなテストプログラムを作りたいのですか、よかったら教えて下さい。そのほうに興味があります。
その他の回答 (2)
- terra5
- ベストアンサー率34% (574/1662)
アセンブラで.text, .data, .bss等の各セクションにテーブルを配置させれば簡単にできると思いますが、 C,C++じゃないからだめですか?
お礼
すみません。 私、アセンブラは書けないんです。 でも、アドバイスありがとうございました。
- tatsu99
- ベストアンサー率52% (391/751)
1つの例として、malloc関数を使用する方法があります。 mallocは、指定されたサイズ分のメモリをヒープ領域に確保します。mallocで指定するサイズ(=確保するメモリサイズ)を非常に大きな値にすれば、たくさんのメモリを消費するプログラムが作成できます。詳細は、man mallocで調べて下さい。
お礼
mallocを使うとヒープ領域がたくさん確保できるのですね。ありがとうございます。 テキスト領域を大量に確保するには、無駄に長いプログラムを書けばいいのでしょうか? また、mallocした領域にデータを書き込むと、今度はデータ領域がたくさん使われるのでしょうか?
お礼
大学の研究です。 Linuxの限界時のパフォーマンスをシミュレーションするつもりです。 詳しい解説&参考URLありがとうございました。 大変参考になりました。