問題タブ [access-violation]
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++ - 文字列を PCWSTR に -> 奇妙なリターン (C++)
私は C++ プログラミングが初めてで、xml ドキュメントへの書き込みに問題があります。
msdn ( http://msdn.microsoft.com/en-us/library/ms766497(VS.85).aspx ) の xml outputter の例を少し変更して使用しています。
私は文字列をCreateAndAddTestMethodNodeに与えています。これはstringtopcwstrでそれをpcwstrに変換するか、そうする必要があります。
しかし、それは「0x00BB9908」のようなもののみを返します。これは、次の方法の1つでアクセス違反を引き起こします。誰かが私が失敗した場所を教えてくれたら本当に素晴らしいことです。
ありがとうございました。
c# - Berkeley DB: ここで何が間違っているのでしょうか?
C# で Berkeley DB を使用して探索する小さなプログラムを作成しました。
テーブルとして使用するデータベースと、そのテーブルのインデックスとして多数のセカンダリ データベースを作成します。問題は、次のエラーでクラッシュすることです。
特定の数のレコードがテーブルに書き込まれると、常にクラッシュします。さらに、nIndexes の値を増やすと、クラッシュする前に書き込まれるレコードの数が減少します。値が十分に小さい場合 (nIndexes = 5、nRecords = 50 など)、プログラムは問題なく完了します。これは、有限のリソースを使い果たしていると思いますが、どこに問題があるのか わかりません。
c# - 使用中の C# .Net ファイルの問題
.Net フレームワークによって最近閉じられたファイルを開く際に問題が発生しています。基本的に、何が起こるかは次のとおりです。
- を使用して XML ファイルを読み込む
DataSet.ReadXml()
- データにいくつかの変更を加える
- を使用して XML ファイルを書き出します。
DataSet.WriteXml()
- を使用して XML ファイルを新しい場所にコピーします。
File.Copy
- カスタム コントロールを使用してファイルを FTP 送信する
このシーケンスは、WriteXML または File.Copy の後でファイル使用中の例外により断続的に失敗する可能性があります。
Windowsの書き込みキャッシュがすぐにフラッシュされない可能性があると思います。これが私の問題を引き起こしている可能性があることを誰かが確認できますか? 提案する解決策はありますか?
ありがとう、
ダン
delphi - Access violations in strange places when using Windows file dialogs
A long time ago I found out that I was getting access violations in my code due to the use of the Delphi Open File and/or Save File dialogs, which encapsulate the Windows dialogs. I asked some questions on a few forums and I was told that it may have been due to the way some programs add hooks to the shell system that result in DLLs getting injected in every process, some of which can cause havoc with a program. For the record, the programming environment I use is Delphi 6 Professional running on Windows XP 32-bit.
At the time I got around it by not using Delphi's Dialog components and instead calling straight into comdlg32.dll. This solved the problem wonderfully.
Today I was working with memory mapped files for the first time and sure enough, access violations started cropping up in weird parts of the code. I tried my comdlg32.dll direct calls and this time it didn't help. To isolate the problem as a test I created a list box with the exact same files I was using during testing. These are the exact same test files I was selecting from an Open File dialog and then launching my memory mapped file with. I set things up so that by clicking on a file in the list box, I would use that file in my memory mapped file test instead of calling into a comdlg32.dll dialog function to select a test file.
Again, the access violatons vanished. To show you how dramatic a fix it was I went from experiencing an access violation within 1 to 3 trials to none at all. Unfortunately, it's going to bite me later on of course when I do need to use file dialogs.
Has anyone else dealt with this issue too and found the real culprit? Did any of you find a solution I could use to fix this problem instead of dancing around it like I am now?
Thanks in advance.
delphi - Delphiのサポートからのアクセス違反の例外->QueryInterface
私は次のコードを持っています:
このコードは、アプリケーションの実行中に何度も呼び出されますが、特定の場合には、Supports()メソッド内で失敗します。より具体的には、Supports()メソッド内のQueryInterface()呼び出しの中にあるようです。
FControlListがnilではなく、FControlList [i]がnilでないことを確認しましたが、それでも発生します。
どんなアイデアでも大歓迎です!!!
c++ - OnDestroy()を呼び出した後、ActiveXコントロール(COleControl)はどうなりますか?
Internet Explorer8で実行されるC++で記述されたActiveXコントロールがあります。ほとんどの場合(約90%)、コントロールを含むタブまたはブラウザーを閉じると、次のようなアクセス違反が発生します。
アクセス違反は、OnDestroy()の呼び出し後、コントロールのデストラクタの呼び出しの前に発生します。
デバッグ出力には次のように表示されます。
実行中のある初期の時点でヒープが破損した可能性がありますが、私のコードはスタックトレースに存在しません。
OnDestroy()の呼び出しとコントロールのデストラクタの間にActiveXコントロールが受け取るライフサイクルイベントは何ですか?
visual-c++ - 「sprintf」メソッドのデフォルトのバッファ長はありますか?
VS 2008 を使用する C++ コンソール アプリケーションで、sprintf メソッドを使用して、ファイルに書き込みたい文字列にデータをフォーマットしました。入力は、さまざまな変数と値を持つ特定のメッセージです (例: Type 'int' and Value ' 10' / タイプ文字列と値 "abc" など) 2 つのメッセージを送信すると、完全に機能します。しかし、2 つ以上のメッセージを送信すると、0xC0000005: Access violation reading location 0xababababという実行時エラーが発生します。なぜこうなった?メソッド「sprintf」にデフォルトのバッファ長があるためですか?どうすればこの問題を克服できますか?
c# - AccessViolationException、保護されたメモリを読み書きしようとしました
特定のハードウェアと対話するためのアンマネージ コードを含む dll を使用しており、C# から使用しようとしていますが、AccessViolationException が引き続き発生します。
何が原因で、どうすれば修正できますか?
c++ - クラスメンバ変数使用時のアクセス読み込みエラー
ヘッダー ファイルで宣言されたプライベート メンバー変数を持つクラスがあります。私のコンストラクターでは、いくつかのファイル名を渡し、それらの名前を使用して他のオブジェクトを作成します。これはうまくいきます。しかし、別のメンバー変数を追加してコンストラクターで初期化しようとすると、アクセス読み取り違反が発生します。コードを他の人に送信したところ、彼のコンピューターで正常に動作しました。何が間違っている可能性がありますか?
問題のあるコードは次のとおりです。
.h ファイル:
これは .cpp ファイルです。
私はこれを引き起こしているものについて完全に途方に暮れています - 何かアイデアはありますか?
ありがとう、BSG
c++ - memcpy または構造体の配列への代入を使用したアクセス違反
更新 2:
さて、私が持っている回避策を別の関数にリファクタリングしました。このように、まだ理想的ではありませんが (特に、関数内で割り当てられたメモリを関数外で解放する必要があるため)、もう少し一般的に使用することができます。私はまだ、より最適でエレガントなソリューションを望んでいます...
更新:
さて、問題の原因は特定されましたが、まだ解決策がありません。
構造体の配列の数バイトを変更する (簡単で効果的な) 方法を見つけようとしています。同じサイズのバッファーを動的に割り当て、配列をコピーし、バッファーを変更し、配列の代わりにバッファーを使用してから、バッファーを解放するという私の現在の回避策は、過剰であり、最適ではないようです。このようにする必要がある場合は、構造体に 2 つの配列を配置し、両方を同じデータに初期化して、2 番目の配列を変更することもできます。私の目標は、メモリ フットプリント (元の配列と変更された配列の違いだけを格納する) と手作業の量 (配列に自動的にパッチを適用する) の両方を削減することです。
元の投稿:
昨夜、問題なく動作するプログラムを書きましたが、今日それをリファクタリングして拡張性を高めたところ、問題が発生しました。
元のバージョンには、ハードコードされたバイト配列がありました。いくつかの処理の後、いくつかのバイトが配列に書き込まれ、さらにいくつかの処理が行われました。
パターンのハードコーディングを避けるために、配列を構造体に入れ、関連するデータを追加してそれらの配列を作成できるようにしました。しかし、今、構造体の配列に書き込むことができません。疑似コードの例を次に示します。
それは機能しますが、これは機能しません:
2 番目のバージョンでは、割り当てでアクセス違反の例外が発生します。2番目のバージョンではメモリの割り当てが異なるためだと思いますが、何が何であるか、またはこれを修正する方法を理解しようとして頭が痛くなり始めています。(私は現在、パターン配列と同じサイズのバッファーを動的に割り当て、パターンを新しいバッファーにコピーし、バッファーに変更を加え、パターン配列の代わりにバッファーを使用して、それから(一時的な) バッファを解放することを忘れないようにします。)
(具体的には、元のバージョンはパターン配列 +offset を DWORD* にキャストし、それに DWORD 定数を割り当てて 4 つのターゲット バイトを上書きします。ソースの長さが不明であるため、新しいバージョンではそれができません。 memcpy の代わりに memcpy を使用します.memcpy へのポインターが正しいことを確認しましたが、まだアクセス違反が発生します. Unicode char ではなくプレーン char (バイトの配列として) を使用し、null ターミネータを無視します。上記の代入を使用すると、同じ問題が発生します。)
何か案は?