問題タブ [segmentation-fault]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
9 に答える
788 参照

c++ - デバッグコンパイルされた実行可能ファイル:NULLへの無効な書き込みで正常に中止しないのはなぜですか?

私がC/C ++について理解していないのは、次のとおりです。

はい、誰もがそれを使用して非常に高速な実行可能ファイルを取得するため、最適化をオンにしてコンパイルします。

ただし、デバッグ情報をオンにしてコンパイルする場合は、速度は気にしません。では、そのコンパイルモードにさらに多くの情報を含めてみませんか。たとえば、いくつかのsegfaultが発生する前に検出します。事実上、assert(ptr != NULL)ポインタへのすべてのアクセスの前にを挿入しますptr。なぜコンパイラはそれができないのですか?繰り返しになりますが、デフォルトではオフになっているはずですが、そのような可能性があるはずです。

編集:一部の人々は、私が提案した検出は意味をなさないか、レポートがsegmentation faultまだ行っていないことを何もしないと言いました。しかし、私が念頭に置いているのは、より優雅で有益な中止です。これは、問題のあるコードのファイル名と行番号を、同じように出力しassert()ます。

0 投票する
8 に答える
13890 参照

c - C でセグメンテーション違反をキャッチする

ポインター演算からセグメンテーション違反を起こすプログラムがあります。これが発生することはわかっていますが、セグメンテーション違反かどうかを事前に簡単に確認することはできません。入力データを「事前スキャン」して、セグメンテーション違反が発生するかどうかを確認することもできます (これを判断することはできません)。または、非常に大量の作業が必要になるポインター演算を使用しないように修正するか、セグメンテーション違反をキャッチしようとすることができます。だから私の質問:

1) C でセグメンテーション違反をキャッチするにはどうすればよいですか? OSの何かがセグメンテーション違反を引き起こすことは知っていますが、セグメンテーション違反が発生した場合、Cプログラムは何ができるのSegmentation faultでしょうか?

2) これはどの程度移植性がありますか?

これは非常に移植性の低い動作だと思うので、セグメンテーション違反をキャッチするコードを投稿する場合は、それがどのように機能するか教えてください。私は Mac OS X を使用していますが、自分のプログラムができるだけ多くのプラットフォームで動作するようにしたいと考えており、オプションが何であるかを確認したいと考えています。

そして心配しないでください - 基本的に私がやりたいことは、よりユーザーフレンドリーなエラーメッセージを出力し、malloc()ed メモリをいくらか解放してから死ぬことだけです。発生したすべてのセグメンテーション違反を無視して先に進むつもりはありません。

0 投票する
2 に答える
3398 参照

multithreading - boost::thread: 最適化されたバージョンの実行時の Segfault

私は仕事に行くのに苦労してboost:threadいます。最適化なしでコンパイルすると問題なく動作します。

しかし、最適化でコンパイルされたバージョンはクラッシュします

何が原因か誰か知っていますか?

私が使用しているコードは次のとおりです。

PS: ubuntu Linux でブースト 1.32 を使用しています。

アップデート:

デバッガーでクラッシュする場所は次のとおりです (37 行目はthread_2.join();元のコードの 1 つです)。

ここに私の実際の2つの機能があります:

助けてくれてありがとう!

0 投票する
4 に答える
3465 参照

c - int メンバーを C 構造体に追加するとセグメンテーション違反が発生する

私はまだCを学んでおり、それを使って画像を生成し始めました。私のプログラムの 1 つがセグメンテーション違反を起こしている理由がわかりません。ソースコードは次のとおりです。40行に短縮されています。

コンパイルして正常に実行されますが (Ubuntu では gcc を使用し、Cygwin を使用する Vista では)、img->o を扱う 2 行のコメントを外すと、問題が発生します。この前の質問に関連していると感じていますが、mallocする必要があるものはすべてmallocしています(と思います)。どんな助けでも大歓迎です。

0 投票する
4 に答える
2844 参照

c - HP-UX でのヒープの破損?

HP-UX 11.11 でプログラムを実行すると、SIGSEGV (11、セグメンテーション違反) が発生する原因を理解しようとしています。

問題は libc 内のどこかで発生しているようです! システム コール トレースは次のように終了します。

プログラムによる最後の命令:

これはシステムの問題ですか、それとも何か不足していますか? より深く掘り下げるためのガイダンスをいただければ幸いです。

どうも。

0 投票する
4 に答える
1739 参照

ubuntu - マシンは定期的にsegfaults

apt-getを使用してUbuntuHardyシステムをインストールまたはアップグレードすると、次のようなメッセージが表示されることがよくあります。

それは常に起こるわけではないので、十分に再試行すれば通常は物事を成し遂げることができますが、それは多くの場合迷惑なセグメンテーション違反をします。

何が起こっているのか、それを修正する方法はありますか?

0 投票する
5 に答える
1200 参照

c++ - 4Dアレイを割り当てようとすると、セグメンテーション違反(コアダンプ)が発生するのはなぜですか?

大きな4Dマトリックスを割り当てようとしていますが、動的に割り当てたいと思います。静的マトリックスを作成するだけですべてが正常に機能するので、今のところ十分なメモリがあることがわかります。ただし、同じことを動的に実装しようとすると、3番目の次元に入るたびに壊れて、4番目の次元に到達する必要があります。このコードが機能しない理由を誰かに教えてもらえますか?

このコードでさまざまなバリエーションを試し、newの代わりにmallocを使用しましたが、機能させることができません。どんな助けでも大歓迎です。

0 投票する
6 に答える
5352 参照

c++ - ポインターに値を代入できないのはなぜですか?

よくある質問と私が見つけることができる他のすべてを読んだ後、私はまだ混乱しています. この方法で初期化された char ポインターがある場合:

char *s = "Hello world!"

文字列は読み取り専用メモリにあり、次のように変更することはできません:

「Wello world!」を作るために。これは理解できますが、私の人生では、それを読み取り専用にしない方法を理解することはできません。ポインターの代わりに配列を使用する必要がありますか? ここのように?

これは私のコードです:

エラー メッセージは単なるセグメンテーション違反です。これが本当にばかげた質問である場合は、事前に謝罪してください。

すべての助けをありがとう。あなたのアドバイスをすべて取り入れた後、私はこれを得ました:

ただし、関数の最後の削除は、独自のセグメンテーション違反を引き起こしているようです。なんで?

参考までに: エラーは、インクリメントされた後に e および s ポインターにアクセスしたことが原因でした。それから、はるかに簡単な解決策が続きました。

0 投票する
4 に答える
449 参照

c++ - なぜg++はこれをコンパイルするのですか?

最近、とても疲れた後、次のコードを書きました。

もちろん、これは次のようになっているはずです。

(括弧ではなく角括弧に注意してください。)

私の知る限り、最初の形式は有効ではありませんが、g++はそれをコンパイルしました。確かに、それは完全に理解できないセグメンテーション違反を吐き出しました、しかしそれはコンパイルしました。

なんで?