問題タブ [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.
c - C でセグメンテーション違反をキャッチする
ポインター演算からセグメンテーション違反を起こすプログラムがあります。これが発生することはわかっていますが、セグメンテーション違反かどうかを事前に簡単に確認することはできません。入力データを「事前スキャン」して、セグメンテーション違反が発生するかどうかを確認することもできます (これを判断することはできません)。または、非常に大量の作業が必要になるポインター演算を使用しないように修正するか、セグメンテーション違反をキャッチしようとすることができます。だから私の質問:
1) C でセグメンテーション違反をキャッチするにはどうすればよいですか? OSの何かがセグメンテーション違反を引き起こすことは知っていますが、セグメンテーション違反が発生した場合、Cプログラムは何ができるのSegmentation fault
でしょうか?
2) これはどの程度移植性がありますか?
これは非常に移植性の低い動作だと思うので、セグメンテーション違反をキャッチするコードを投稿する場合は、それがどのように機能するか教えてください。私は Mac OS X を使用していますが、自分のプログラムができるだけ多くのプラットフォームで動作するようにしたいと考えており、オプションが何であるかを確認したいと考えています。
そして心配しないでください - 基本的に私がやりたいことは、よりユーザーフレンドリーなエラーメッセージを出力し、malloc()
ed メモリをいくらか解放してから死ぬことだけです。発生したすべてのセグメンテーション違反を無視して先に進むつもりはありません。
multithreading - boost::thread: 最適化されたバージョンの実行時の Segfault
私は仕事に行くのに苦労してboost:thread
います。最適化なしでコンパイルすると問題なく動作します。
しかし、最適化でコンパイルされたバージョンはクラッシュします
何が原因か誰か知っていますか?
私が使用しているコードは次のとおりです。
PS: ubuntu Linux でブースト 1.32 を使用しています。
アップデート:
デバッガーでクラッシュする場所は次のとおりです (37 行目はthread_2.join();
元のコードの 1 つです)。
ここに私の実際の2つの機能があります:
助けてくれてありがとう!
c - int メンバーを C 構造体に追加するとセグメンテーション違反が発生する
私はまだCを学んでおり、それを使って画像を生成し始めました。私のプログラムの 1 つがセグメンテーション違反を起こしている理由がわかりません。ソースコードは次のとおりです。40行に短縮されています。
コンパイルして正常に実行されますが (Ubuntu では gcc を使用し、Cygwin を使用する Vista では)、img->o を扱う 2 行のコメントを外すと、問題が発生します。この前の質問に関連していると感じていますが、mallocする必要があるものはすべてmallocしています(と思います)。どんな助けでも大歓迎です。
c - HP-UX でのヒープの破損?
HP-UX 11.11 でプログラムを実行すると、SIGSEGV (11、セグメンテーション違反) が発生する原因を理解しようとしています。
問題は libc 内のどこかで発生しているようです! システム コール トレースは次のように終了します。
プログラムによる最後の命令:
これはシステムの問題ですか、それとも何か不足していますか? より深く掘り下げるためのガイダンスをいただければ幸いです。
どうも。
ubuntu - マシンは定期的にsegfaults
apt-getを使用してUbuntuHardyシステムをインストールまたはアップグレードすると、次のようなメッセージが表示されることがよくあります。
それは常に起こるわけではないので、十分に再試行すれば通常は物事を成し遂げることができますが、それは多くの場合迷惑なセグメンテーション違反をします。
何が起こっているのか、それを修正する方法はありますか?
c++ - 4Dアレイを割り当てようとすると、セグメンテーション違反(コアダンプ)が発生するのはなぜですか?
大きな4Dマトリックスを割り当てようとしていますが、動的に割り当てたいと思います。静的マトリックスを作成するだけですべてが正常に機能するので、今のところ十分なメモリがあることがわかります。ただし、同じことを動的に実装しようとすると、3番目の次元に入るたびに壊れて、4番目の次元に到達する必要があります。このコードが機能しない理由を誰かに教えてもらえますか?
このコードでさまざまなバリエーションを試し、newの代わりにmallocを使用しましたが、機能させることができません。どんな助けでも大歓迎です。
c++ - ポインターに値を代入できないのはなぜですか?
よくある質問と私が見つけることができる他のすべてを読んだ後、私はまだ混乱しています. この方法で初期化された char ポインターがある場合:
char *s = "Hello world!"
文字列は読み取り専用メモリにあり、次のように変更することはできません:
「Wello world!」を作るために。これは理解できますが、私の人生では、それを読み取り専用にしない方法を理解することはできません。ポインターの代わりに配列を使用する必要がありますか? ここのように?
これは私のコードです:
エラー メッセージは単なるセグメンテーション違反です。これが本当にばかげた質問である場合は、事前に謝罪してください。
すべての助けをありがとう。あなたのアドバイスをすべて取り入れた後、私はこれを得ました:
ただし、関数の最後の削除は、独自のセグメンテーション違反を引き起こしているようです。なんで?
参考までに: エラーは、インクリメントされた後に e および s ポインターにアクセスしたことが原因でした。それから、はるかに簡単な解決策が続きました。
c++ - なぜg++はこれをコンパイルするのですか?
最近、とても疲れた後、次のコードを書きました。
もちろん、これは次のようになっているはずです。
(括弧ではなく角括弧に注意してください。)
私の知る限り、最初の形式は有効ではありませんが、g++はそれをコンパイルしました。確かに、それは完全に理解できないセグメンテーション違反を吐き出しました、しかしそれはコンパイルしました。
なんで?
c - C の配列インデックスとして long integer がセグメンテーション違反を起こす
次の C コードでは、セグメンテーション違反が発生します。
Cでuint32_tを配列のインデックスとして使用するにはどうすればよいですか? または、uint32_t と 12 桁の数字をインデックスとして取得できる配列のような構造を使用するにはどうすればよいですか?
あらゆる種類の助けをいただければ幸いです。
c++ - このようなベクトルのサイズ変更中にセグメンテーション違反を回避するにはどうすればよいですか
それはあなたにとって簡単な質問だと思います....私はC ++でかなり新しいです.....
だから私はこのように定義されたベクトルを持っています:
vector<vector<float> > big_vector;
ファイルを読み取ってこのベクトルを初期化すると、big_wector には約 200,000 の要素が含まれています。それぞれがベクトル < float >
次に、big_vector の要素を変更したいと思いました。一部の要素については、最初にサイズを変更する必要があります (例: 0 から 300)。
big_vector[i].resize(new_size);
プログラムを実行すると、最初はうまくいきましたが、いくつかの変更を加えた後、上記の行で「セグメンテーション違反」が発生しました。