ベストアンサー セグメントエラー 2002/12/19 13:27 Cプログラムを実行した時に発生する、セグメントエラー は何が原因なのでしょうか? コンパイルはちゃんとととっているのに、 なぜエラーがでるのでしょうか? C言語の本を見たのですが、 のってません。 お願いします。 みんなの回答 (5) 専門家の回答 質問者が選んだベストアンサー ベストアンサー muyoshid ベストアンサー率72% (230/318) 2002/12/19 13:49 回答No.2 こんにちわ。 「セグメントエラー」ってSegmentation Fault の事ですよね。 そうであれば、メモリのアクセス侵害です。 原因としては、 ・アクセスできない筈のアドレス (NULL アドレスとか) にアクセスした ・獲得したアドレスを越えてアクセスした。 ・初期化していないポインタ変数を使ってアクセスした。 と言う感じです。 ケースとしては少ないと思いますが、1つの変数 (領域) を複数の データ型でアクセスした場合に、起きる事があります。 質問者 お礼 2002/12/20 23:17 ありがとうございます。アドレス関係の違反なのですか、 がんばって確認してみます。 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 その他の回答 (4) TMINET ベストアンサー率32% (45/140) 2002/12/21 13:52 回答No.5 >ありがとうございます。 >NULLとは文字列の最後に入っているやつですね、 >絶対入れないといけないのですよね~? 文字列にかぎりませんよ。 ポインタなども使い回ししたりする場合はNULLで初期化すると良いです。 ポインタが開放したアドレスを覚えてたりして、そこにアクセスした瞬間コケるという事もあります。 基本的に確保した領域は何が入っているか分かりません、ですから初期化をお勧めしたのです。 質問者 お礼 2002/12/25 13:15 ありがとうございます。 初期化は心がけます。 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 fruipa ベストアンサー率38% (14/36) 2002/12/20 22:25 回答No.4 No1、No2の方が書いておられるように、原因は様々ですが、 ひとつ例をあげると、 char a[5]; char b[10]; と領域を定義して、 strcpy( a, b ); と記述した場合、構文は問題ありませんよね。 コンパイルエラーは出ません。 でもいざ実行した時、bの値が"abcd"であれば問題ありませんが、 "abcdefgh"だったらaの領域をオーバーしてしまいます。 こういう場合に、そういうエラーが起こる場合があります。 メモリ領域は実行時に割り当てられる為、 aの領域の後ろがたまたま書き込んではいけないようになっている場合は エラーが出ますし、書き込み可能の領域が割り振られている場合は、 何か別のデータを壊して上書きしてしまいます。 また、本を見られたようですが、この辺のことは言語というよりは、 OSの本のメモリ管理の説明のところに載っています。 質問者 お礼 2003/01/04 20:45 ありがとうございます。 とてもくわしくて解かりやすかったです。 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 1 TMINET ベストアンサー率32% (45/140) 2002/12/19 15:19 回答No.3 ソースを見ていないのではっきりしたことはいえませんが、 コーディング時に気を付けることは、使用する変数は「必ず初期化を行う」を習慣づけることです。 ポインタや配列などは怠りがちになってしまいますが是非やってください。 NULLクリアしてあげるだけでもかなり違うと思います。 現在のOSは皆マルチタスクですからC言語の場合メモリ管理はプログラマがしっかりやらねばなりません。 質問者 お礼 2002/12/20 23:24 ありがとうございます。 NULLとは文字列の最後に入っているやつですね、 絶対入れないといけないのですよね~? 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 1 xjd ベストアンサー率63% (1021/1612) 2002/12/19 13:45 回答No.1 コンパイルは通りますが、実行時に発生するエラーですね。 配列を定義した大きさを超えて、データを書き込んでしまったり、 不正な値が入っている・あるいはアクセスしてはいけないアドレスが入っているポインタ変数を使って値を書き込んだりした時に発生します。 質問者 お礼 2002/12/20 22:42 ありがとうございます。アドレス違反ですね、、、 よくみてみます。 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 1 カテゴリ [技術者向] コンピュータープログラミング・開発C・C++・C# 関連するQ&A c++ セグメントエラー あるプログラムをつくっていて、コンパイルはできたのですが、セグメントエラーというランタイムエラーが取り除けません。 エラーの発生している行は特定できました。 その行は、以下のようなものです。 AAA aaa[4][64][4]; AAAは型名、aaaは配列名です。3次元配列の宣言でエラーが発生していました。 エラーの発生している行はこの行で、代入などを行っている部分ではありません。配列の大きさを考えてみても、メモリが足りなくなっているとは考えづらいのですが、他になにか原因はあるのでしょうか? 考えられる原因を教えてください。 FORTRAN: WIN SalfordFTN77 → LINUX g77 (セグメントエラー) 今まで、Salford FTN77 を使用していたのですが、 この度、LINUXのg77でプログラムを動かすことになりました。 Salford FTN77で正常に動作していたのですが、g77では、実行時に「セグメント違反」が発生してしまいます。 現在わかっていることを列挙しますと… ・Salford FTN77では、問題なく動作する ・g77で、コンパイルまでは成功する ・Salford FTN77からの書き換えはおそらく成功(同種のプログラムで確認済み) ・プログラムをループ(=50)させているのですが、特定のループ回数(=13)でセグメントエラーになる。 ・エラー前の計算は正しく行われている ・ループ回数(=10)を引き下げると実行可能になる ・ループ毎にファイルのcloseも行っている ・スタックを限界まで引き上げて実行したが、同様のエラーが発生 ・特定のループ回数(=13)から、ある特定の変数(ここでは b)を、表示(write( , ) b )もしくは代入(a=b)しようとするとエラーが発生する。 ・エラーが発生する直前までは、ある特定の変数(b)は正しく出力でき、値に異常もない。 元々、簡単な数値計算をおこなう程度にしかプログラムを扱っていない生粋の初心者です。 ネットでセグメントエラーについて検索し、手当たり次第試してみたのですが、うまくいかず困っています。 ソースは公開できないのですが、何か心当たりのある方は、回答していただけると嬉しいです。 よろしくお願いします。 コンパイラによってエラーが出たり出なかったり 構造体をポインタでつなぐリスト構造を使ったソースを書いて、Borland C++ Compiler 5.5 でコンパイルしたものを実行するとエラーで止まってしまいました。 コンパイル時には何も警告が出ませんでした。 しかし、ソースを何度見てもバグらしいコードが見つからなかったので、試しに Microsoft .NET Framework SDK でコンパイルしてみたところ、こちらも警告も出ずにコンパイルが通って、実行してみたらこんどは正常に動作しました。 コンパイラによって、実行時にエラーが出たり出なかったりするということは初めてなのでその原因を知りたくて質問しました。 どういった場合にこのようなことが起こるのでしょうか。 Borland C++ で出たエラーは、おそらくセグメントエラーだと思います。 今のところ正常に動いているのですが、なにかデンジャラスなコードを書いてしまった気がして気持ち悪いです。 ネットワークエンジニアとは?技術職の未来を考える OKWAVE コラム ゲーム中にエラー C++でのゲームプログラミングについての本を読んでいるんですが記載されているソースを打ち込みコンパイルし実行するとゲーム途中で「Abnormal program termination」というエラーが出てしまいます。何が原因なんでしょうか?またどうしたら解決できるのでしょうか? 本は「C++わくわくゲームプログラミング教室」という本です。 MicrosoftVisualC++2010エラー 学校でC言語を習っているので家でもやろうと思ってMicrosoft Visual C++ 2010 Expressをインストールしました。 取りあえず本を読みながら、プログラムを書いていたのですが、3個目くらいのプログラムを実行(デバッグなしで開始)したら、「ビルドエラーが発生しました。続行して、最後に成功したビルドを実行しますか?」というエラーが出てきて、実行できませんでした。 (はいを押すと、指定されたファイルが見つかりませんと出てきます。) しかも、前に書いたプログラムまで、実行したらそのメッセージが出るようになりました。 一応実行してエラーが出たプログラムも書いておきます。 #include <stdio.h> int main (void) { printf("こんにちは\n"); printf("さようなら\n"); return (0); } 原因がわかりません。 どなたかご教授願います。 セグメントのエラー 現在、TurboCでプログラムを作っているのですが、前まで正常に動いていたプログラムに、簡単な計算式(pow関数など累乗の計算式)を加えたところ、コンパイル時に 「Error: Segment _TEXT exceeds 64k」 というエラーが出てしまいます。 環境はPC98の古いパソコンを使ってます。 なにかお心当たりのある方、どうかご教授の方よろしくお願いいたします。 ど素人です。7セグメント表示の回路とプログラムを教えてください CPUがZ-80のマイクロコンピュータで7セグメントLED表示の回路とプログラムを教えてください。プログラム言語はC言語でお願いします。 セグメント エラー マックを起動したときに出るセグメント エラーとは いったいなにが原因になることがおおいのでしょうか? OK Webで検索しましたがあてはまる回答がなかったので投稿します。よろしくお願いします。 os 9.1 G4 ブルー エラーについて C:\Program Files\java>java Sample Error: could not open `C:\Program Files\Java\j2re1.4.0\lib\i386\jvm.cfg' というエラーが出ます。 原因は何でどうすれば実行できますか。 ちなみにコンパイルはできます。 エラーメッセージ Turbo C++ の環境でアプリの作成をしていてその後 Studio2006のc++Builderの環境に変えてそのプログラムをコンパイルして実行したら 「プログラムエラー必要なDLL WINSPOOL.dllが見つかりません」といったエラーがでて実行できません なぜ同じプログラムなのにエラーが出たのか分かりません。直す方法をご教授ください。 プロジェクトオプションの「実行時パッケージを使って構築」のチェックは外してあります。 実行時エラーについて お世話になっています。教えて下さい。 VBで作ったプログラムです。 デバッグ時には何の問題もなく、実行可能(完全コンパイル後に実行)で、コンパイルも問題なく通りますが、EXEにして実行すると、以下のエラーが出ます。 実行時エラー:'91' object変数、またはwithブロック変数が設定されていません。 どなたか、原因に心当たりがある方、いらっしゃったら教えて下さい。 よろしくお願いします。 ftn77のコンパイルエラー ftn77でfortranのプログラムをコンパイルしたところ、 文字情報のみでテストしたらコンパイルに成功したのですが、 数値計算の入ったものをコンパイルしたら、 実行時に以下のようなエラーが起こりました。 ーーーーーーーーーーーーーーーーーーーーーーーー RUN-TIME ERROR 00401000 main [+00c5] [recur= 1] メッセージ WARNING the following symbols are missing: IMAG C:\fortran\(ファイル名).obj (C:\FORTRAN\(ファイル名).FOR) ーーーーーーーーーーーーーーーーーーーーーーーーー 元々別のパソコンでコンパイルが成功したものを、 まったく書き換えずにftn77でコンパイルしてみたのにもかかわず、 UNTIME EROORと表示されました。 原因が何か分からないので、どなたか教えてください。 ちなみに10行程度の単純なプログラムなら、数値計算をしてもエラーは怒りませんでした。 AIは使う人の年齢や市場にも影響する?人工知能の可能性 OKWAVE コラム 7セグメントLEDの点灯について 超初心者です。 今PIC(16F84A)とC言語を使って作る作品の実習で、7セグメントLED(アノードコモン)を使おうと思って買ったんですが、点灯させるプログラムがわかりません。どのような感じで作れば良いのですか?作り方を知っていたら教えてほしいです… 初心者なのでご勘弁を! 馬鹿な質問かもしれませんが、C言語で|a+b|<=cを入力してコンパイルし、 実行しようとしてもエラーが出て実行できません。C言語では絶対値のプログラム は存在しないのでしょうか?もし存在するなら教えてください。 PINGプログラムのエラー ネットワークの本を参考に、C言語を使って、PINGのプログラムを作りました。今年の2月くらいまでは、正常に動いていたのですが、最近、コンパイルをし、動かしてみたのですが、出力がきちんとでません。 正常の場合は、「0.00123」と出力されるのですが、最近は、「- 1083728988392.3289930」という感じで表示されてしまいます。正常に出力されているプログラムも、特にいじっていない状態でコンパイルすると、正常に表示されません。原因がわかりません。どなたか、詳しい方、アドバイスをお願いします。 このエラーについて C言語でプログラムを作成しgccでコンパイルしたんですけど 「computer06.c:8: conflicting types for `heapsort' computer06.c:5: previous declaration of `heapsort'」 というエラーがでたんですが、どう直したらいいんですか?このエラーの意味を教えてください・・・ 特定のファイルから数字を読み込みヒープソートをしそれにかかった時間を求めるというプログラムです。よろしくお願いします C++Builder XEのコンパイル&実行 以前C++ Builder5で作成していたプログラム(プロジェクト)を、C++ Builder XEで使うことになり、XEでコンパイルを行った時に出るエラーは全部直し、実行しようと思ったのですが、「コンパイル成功」と出た後に実行画面が出ません。 「実行」を押したときに、コンパイル成功で実行画面が出ない理由には、どのような原因が考えられるのでしょうか? 思い当たる原因があったら、ぜひ教えてください。 マイクロソフトVisualC++使用。コンパイルとビルドにエラーはないのに実行できない。 超初心者です。 今、本を見ながら練習問題をこなしている状況なんですけど。 足し算のプログラムをつくりましょう、ということで main() { int c = 0, i= 0; while ( i <5 ) { i++; c = c+ i; } } と入力し、コンパイルしビルドしました。両方ともエラーもなく終了し、いざ実行すると『PressAnyKey。。』のみ表示され計算もなにもなく終わってしまうのです。いったいなにが足りないのでしょう・・。 あと、C言語のエラー集などを載せているサイトをご存知だったら教えてください。超初心者にとって一番頼りになるのは、うまくいっている状況を載せられるのではなく、エラーになったときの状況をどうにかしてくれるところなので・・・。 よろしくお願いします。 c++Builder ver6.0のパッケージエラー コンパイル実行できたc++Builderプログラムを USBメモリーに保存し自宅のパソコンで 実行させたところ とくに複雑でもないプログラムなのに --------------- コンパイル [リンカ 致命的エラー] Fatal: ファイル DCLUSR.BPI が開けません といったヘンなエラーが発生します. メニューバーのプロジェクトのオプション のパッケージ ダグの パッケージ再構築 の中のDCLUSRをいちいち削除しないと 実行ができません。 何かよい方法はないものでしょうか・ データベースのオープンエラーが発生 WindowsVista SP1にてメニューから特定のプログラムを実行すると Accessデータベースのオープンにてエラーが発生します。 言語はVB6.0です。 メニューからShellExecute "runas"にて実行を行うとAccessデータベースのオープンにて 実行時エラー3051が発生します。 EXEをダブルクリックしたり、Shellにて実行した場合は正常にオープンされます。 lngLoadPgm = ShellExecute(0, "runas", "C:\WORK\TEST.EXE", "", vbNullString, 1) NG lngLoadPgm = Shell("C:\WORK\TEST.EXE", vbNormalFocus) OK 原因がまったくわかりません。 わかる方がいましたら教えて下さい。 よろしくお願いします。 注目のQ&A 「You」や「I」が入った曲といえば? Part2 結婚について考えていない大学生の彼氏について 関東の方に聞きたいです 大阪万博について 駅の清涼飲料水自販機 不倫の慰謝料の請求について 新型コロナウイルスがもたらした功績について教えて 旧姓を使う理由。 回復メディアの保存方法 好きな人を諦める方法 小諸市(長野県)在住でスキーやスノボをする方の用具 カテゴリ [技術者向] コンピューター プログラミング・開発 Microsoft ASPC・C++・C#CGIJavaJavaScriptPerlPHPVisual BasicHTMLXMLCSSFlashAJAXRubySwiftPythonパフォーマンス・チューニングオープンソース開発SEOスマートフォンアプリ開発その他(プログラミング・開発) カテゴリ一覧を見る OKWAVE コラム 突然のトラブル?プリンター・メール・LINE編 携帯料金を賢く見直す!格安SIMと端末選びのポイントは? 友達って必要?友情って何だろう 大震災時の現実とは?私たちができる備え 「結婚相談所は恥ずかしい」は時代遅れ!負け組の誤解と出会いの掴み方 あなたにピッタリな商品が見つかる! OKWAVE セレクト コスメ化粧品 化粧水・クレンジングなど 健康食品・サプリ コンブチャなど バス用品 入浴剤・アミノ酸シャンプーなど スマホアプリ マッチングアプリなど ヘアケア 白髪染めヘアカラーなど インターネット回線 プロバイダ、光回線など
お礼
ありがとうございます。アドレス関係の違反なのですか、 がんばって確認してみます。