問題タブ [buffer-overrun]
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++ - OpenCV 2.4.9 FileStorage でのバッファ オーバーラン
私は最近、リリースモードでコンパイルするときにこの小さなコードを実行するときにアップグレードしOpenCV 2.4.9
て遭遇しました:Buffer Overrun
デバッグ モードではすべてが正常に動作するため、解決策を探す場所がまったくわかりません。それが役立つ場合、私のコールスタックは次のようになります。
c++ - STATUS_STACK_BUFFER_OVERRUN が発生しました
この特定のエラーを検索したところ、ループ カウントが間違っていて、プログラムが配列の境界を超えていることが根本的な問題であることがわかりました。
ただし、配列が出力時にデータを失い始めるポイントまで各配列を下げた後も、同じエラーがスローされ続けました。私はまだ C/C++ に慣れていませんが、これについての洞察をいただければ幸いです。
プログラムは最後まで実行されたようで、メイン メソッドに戻ります。
c - C バッファ オーバーランのリンク リスト
順序付けされた挿入関数を使用して、C で連結リストを作成します。配列リストは個々のリンクされたリストの配列であり、10000 の乱数を生成する必要があり、300 または 400 の数を生成できる場合もあれば、失敗してバッファ オーバーランの例外が発生する場合もあります。これを取得する理由は何ですか?
メモリを解放する必要があるためだと思いましたが、割り当てているすべてのメモリが必要なようで、何も残っていません。
エラーが発生すると、コール スタックに次の行が表示されます。
例外の原因です。
生成される数字が少なくても適切に機能します。100個の数字を実行すると、出力は次のようになります 。
必要な場合は、完全なコール スタックを次に示します。
別のエラーが発生しました: プログラム 6.exe の 0x100B26B6 (msvcr110d.dll) で未処理の例外: 0xC0000005: アクセス違反の読み取り場所 0x0146F78F.
このコール スタック:
これは完全なコール スタックではありません。完全なコール スタックは数マイルの長さです。
c - バッファオーバーフローで関数の戻り値を変更する
x86 システム
関数の戻り値を変更しようとしています。例えば
foo() は常に 1 を返します。関数からの戻り値が %eax に格納されることはわかっています (したがって、1 は %eax に格納されます)。%eax 値に到達して変更する方法はありますか? %eax がスタックに表示されないため、これは起こり得ないと考えています!そうですか?
visual-studio - psqlodbc ドライバーのバッファー オーバーランを修正する方法
Visual FoxPro アプリケーションは Postgres psqlodbc ドライバー 9.3.0400 を呼び出します どちらも Windows 7 x64 で実行される 32 ビット アプリケーションです
この呼び出しにより、psqlodbc35w.dll で Buffer Overrun 例外が発生し、以下のスタック トレースが表示されます。問題を解決する方法は? psqlodbc は C で書かれたオープン ソース アプリケーションであり、おそらく Visual Studio でコンパイルされています。Visual Studio 2015 Community Edition がインストールされています。
クラッシュ後、Visual Studio 2015 Community Edition デバッガーが呼び出されます。スタック トレースが表示されます。
デバッグ ウィンドウには、ロードされたモジュールが多数表示され、最後に次のように表示されます。
http://www.postgresql.org/message-id/1B88854920C942948F943E26B452E3A4@dell2にも投稿
アップデート
クラッシュの原因となる FoxPro コードを次に示します。クエリが Postgres に送信される前に、odbc ドライバーでクラッシュが発生します。クエリ内のテーブルは、データベースに存在する必要はありません。postgres odbc 公式ドライバーを使用してクエリを実行するだけです。クエリで $ 文字を使用すると、odbc がクラッシュする可能性があります。
使用される接続文字列:
seh - プログラムで STATUS_STACK_BUFFER_OVERRUN エラーをキャッチする方法はありますか?
STATUS_STACK_BUFFER_OVERRUN
ときどきエラー ( )をスローする C コードがあり0xC0000409
ます。以下の C コードを使用して、そのエラーを再現できます。Windows 7 で Visual Studio 2013 Update 4 を使用しており、/EHaおよび/GSフラグを使用してコンパイルしています。ただし、プログラムでエラーをキャッチできませんでした。コードが私の__except
ブロックに入ることはありません。代わりに、Visual Studio は、スタックの破損を知らせるいくつかのダイアログ ボックスを表示します。このエラーが発生すると、プログラムの状態が疑わしいことに気付きます。本番コードでエラーが発生している場所を特定するために、エラーをキャプチャしようとしているだけです。このエラーをプログラムで処理する方法はありますか?