掲示板利用宣言

 次のフォームをすべてチェックしてからご利用ください。

 私は

 題名と投稿者名は具体的に書きます。
 課題の丸投げはしません。
 ソースの添付は「HTML変換ツール」で字下げします。
 返信の引用は最小限にします。
 環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
 返信の付いた投稿は削除しません。
 マルチポスト(多重投稿)はしません。

掲示板2

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.26984

マージソート
投稿者---take(2006/05/25 00:25:56)


大変失礼をご了承ください。
まずはじめにすみませんが、ソースを貼れません。
貼ると第三者に課題の回答を教えることになってしまいますので。

私は今回マージソートをするプログラムを作りました。
まぁ大学の課題だったわけですが、ファイルから数字1000個のファイル,
2000個のファイル・・・・10000個のファイル。
を読み込んでそれぞれソートしよって課題だったんです。

んで、これは全部問題なくできて、デバックしても問題なし。課題終了と。



でもふときになったわけです。
これって1000000個 or 3000000個のファイルでもいけるのかと、
int型のデータ範囲内なので大丈夫だろうと思って実行。
そしたらccでコンパイルしたのがセグメント例外をはいたんです。
んでバッファサイズや、malloc系のサイズを確認しても問題なし。
ccのバグかなとおもってgccでやってもバスエラー。
こういう場合ってどんな問題が考えられるんでしょうか?
マージソートなんでデータ増やしたからってアルゴリズムでおかしくて例外はいているとは思えませんし。
もしどなたかわかるかたがいらっしゃいましたら教えてください。
では失礼いたします。


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:マージソート 26986 かずま 2006/05/25 01:47:23
<子記事> Re:マージソート 26988 nop 2006/05/25 09:39:26


No.26986

Re:マージソート
投稿者---かずま(2006/05/25 01:47:23)


> こういう場合ってどんな問題が考えられるんでしょうか?

マージソートの関数の中に、大きな配列を宣言していませんか?
自動変数はスタック上に確保され、スタックのサイズは 1メガバイト程度に
制限されているため、例えば、int buf[1000000]; で 4メガバイトを
確保したつもりになっても実行時にエラーとなることがあります。
そうであれば、static int buf[1000000]; とするか、関数の外部で宣言して、
静的に配列を確保するようにしてみてください。
たとえ、配列のサイズがスタックのサイズより小さい場合でもマージソートが
再帰呼び出しをしていれば、スタックをどんどん消費していずれはエラーに
なることも考えられます。


この投稿にコメントする

削除パスワード

No.26988

Re:マージソート
投稿者---nop(2006/05/25 09:39:26)


デバッグが出来る様なので、ご自分でデバッグすれば良いだけの話では?


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧