問題タブ [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++ - Delphiアプリケーションから外部関数(C ++)を呼び出す際のアクセス違反
私はC++で書かれた外部DLLを持っています。以下の部分は、構造体型と関数を宣言しています。これらは、ポインターが与えられると、この型の変数を埋めます。
Delphiアプリケーションで同様の型を宣言し、上記の関数を呼び出します。
関数が呼び出されると、デバッガー例外通知が表示されます。
プロジェクト...モジュール'Scraper.dll'のアドレス10103F68でメッセージ'アクセス違反を伴う例外クラスEAccessViolationを発生させました。アドレスFFFFFFFC'の読み取り。プロセスが停止しました。
同じDLLからエクスポートされた他の関数は正常に動作するため、型宣言を間違えたと思います。私はこの時点で行き詰まっているので、どんなヒントも高く評価されます。
c# - 関数を Visual Basic 6.0 から C# に変換すると AccessViolationException がスローされる
Visual Basic 6.0の関数を次のように変換しています。
C# では、関数を次のように宣言しています。
C# から RequestOperation を呼び出すと、例外がスローされます。
[System.AccessViolationException] = {"保護されたメモリを読み書きしようとしました。これは多くの場合、他のメモリが破損していることを示しています。"}
このような他の多くの関数の呼び出しに成功しましたが、この関数だけが例外をスローします。
java - クラッシュする OS API に try / catch を配置できますか?
Windows OS ライブラリを使用して画像ファイルを操作しています。明らかな理由もなく、内部でクラッシュすることがあります。すべての入力は適切であり、スレッドの問題ではありません。クラッシュはメモリ A/V です。
では、次のようなものの欠点は何ですか。
それはうまくいきますか?コードの他の場所では例外を使用しません。
.net - Vistaの起動時に違反にアクセスする
Windows Vistaによる起動時に(「Startup」フォルダのショートカットを使用して).NETアプリケーションが自動的に起動されると、奇妙な未処理のアクセス違反が発生することがあります。実行可能ファイルを手動で起動したときに、このエラーは発生していません。それはランダムに発生し、私はまだ問題を確実に再現することができていません。
これが私が受け取るメッセージです:
{実行可能ファイル名}.exeの0x6f303deaで未処理の例外:0xC0000005:アクセス違反の読み取り場所0x0000000c。
コールスタック:
mscorwks.dll!6f303dea()
[以下のフレームが正しくないか欠落している可能性があります。mscorwks.dllのシンボルがロードされていません]
kernel32.dll!7780907a()
mscoree.dll!6ff47c24()
kernel32.dll!7780d0e9()
ntdll.dll !778e19bb()
ntdll.dll!778e198e()
mscorwks.dllはCLRに関連しているので、これはCLRのバグである可能性があります。なぜこれが起こっているのか、そしてそれを修正する方法について何かアイデアはありますか?
c++ - ベースクラスの仮想デストラクタ アクセス違反
これがすでに尋ねられていたら申し訳ありませんが、デストラクタとアクセス違反を探すのに苦労しました =)
シナリオの C++ 疑似コードを次に示します。
DLL1 内 (/MT でコンパイル)
DLL1にリンクするDLL2で
何が起こっている?私は脳の一部を持っていますか?A のデストラクタを非仮想にすると、すべて正常に動作します。A と B のデストラクタも呼び出されます (A のデストラクタが仮想であるかのように、これは公開されているためですか?)。
私の主な質問ですが、基本クラスのデストラクタが仮想として宣言されているときにアクセス違反が発生するのはなぜですか?
c++builder - C ++Builder6でのクレイジーアクセス違反
私は次のコードを持っていますが、私の一生の間、アクセス違反の例外が発生する理由を理解できませんか?すべてのOBJ、TDSなどのファイルを削除して新しいプロジェクトに配置しましたが、それでもアクセス違反が発生します。
基本的に、このコードはTFrameにTListViewを表示し、さまざまなタイムゾーンで世界中のさまざまな現在時刻を表示します。
注:コードはC ++Builder6にあります。
誰かが助けることができますか?
BLOODY-HELL-UPDATE:解決しました。TFrameコンストラクターのTListViewにアイテムを追加しないでください。DUMBDUMBDUMB。
メジャーアップデート:UpdateTimes()がタイマーを介して呼び出された場合、「li->Deleting」プロパティはTRUEのようです。タイマーの外で呼び出された場合、それはFALSEです。では、タイマーから呼び出されるため、なぜ「li->Deleting」が「true」に設定されるのでしょうか。私が行った場合:
UpdateTimes()がタイマーから呼び出された場合、if()には入りません...... argggggh !!!
更新: TTimerの外部でUpdateTimes()を呼び出すと、正常に機能するようです。ただし、タイマーから呼び出されると、アクセス違反がスローされます。何が得られますか?
ヘッダーファイル:
CPPファイル:
UPDATEそのリストをデモするサンプルコードは、アイテムを参照ではなくコピーとして受け取ります。(私が見る限り、以下のコードで間違いを犯した場合は訂正してください)
@クレイグヤング:
混乱しています...構造体は参照としてではなくコピーとしてリストに追加されると思いましたか?以下のコードを見てください、コピーが作成されているようですか?それとも私は初歩的な何かを逃していますか?または以下のコーディングミス??
c++ - ファイルから2次元配列へのテキストのロード(C ++)
私はゲームを作成していて、マップデータをサイズの2次元配列に保存しました[34][10]。もともと私は、配列を埋めるための単純な関数を使用してマップを生成し、次のコードを使用してこのデータをファイルに保存しました。
これにより、希望どおりのテキストファイルが出力されます。ただし、次のコードを使用して読み戻そうとすると、アクセス違反が大量に発生し、実行時にクラッシュします。
誰かが問題が何であるか知っていますか?
delphi - Delphi: この関数を静的にリンクできるのに動的にリンクできないのはなぜですか?
私は現在、チェック スキャナー用のブラック ボックス サード パーティ DLL とインターフェイスするモジュールを作成しています。DLL 関数を動的にロードする必要がありますが、これは 1 つの関数を除くすべての関数で機能しています。
SetScanParameters 関数にはパラメーターとしてレコード構造があり、動的にロードするために使用している方法論を何らかの形で妨害していると思います (以下を参照)。動的にロードされると、関数はアクセス違反によって中断されます。
ただし、SetScanParameters は、静的に読み込まれたときに適切に読み込まれ、機能します。レコード構造を持つ関数を動的にロードするために必要なことは他にありますか?
明確にするために自己編集:
レコードの種類:
静的宣言:
静的実装:
動的ロジック (または、動作させるために静的呼び出しを使用する必要がなければ動的ロジックとなるもの):
そして、stdcall、cdecl、safecall、pascal、および動的に登録しようとしましたが、それらはすべて AV になりました。また、[0..14] の代わりに構造体 [1..15] で配列を作成しようとしました。しかし、私が得られないのは、構造体を静的バージョンに渡すと機能するということです。
また、OPに誤字脱字がありましたことをお詫び申し上げます。OPのコードを書き直していて、いくつかのタイプミスをしたため、スレッドが少し混乱した可能性があります。現在のテスト関数のコピー/貼り付けに置き換えました。
編集: 以下は、DLL のドキュメントで説明されている typedef です。
marshalling - ビットマップを int[] に変換するには?
GPUで画像処理を行うプログラムを書いています。このためにCUDA.Netを使用していますが、残念ながらCUDAはバイト型を認識しません。このコードを使用してピクセル情報を保存できました。
私の問題は、CUDA がこのバイト配列を取らないという事実にあり、それをint[]型に変更すると、プログラムは AccessViolationException を取得します。
誰かがこの問題を解決する考えを持っていますか?
前もって感謝します。
windows-7 - Windows 7でtclスレッドを使用しようとすると、アクセス違反が発生します
この単純なプログラムをWindowsで動作させようとしていますが、クラッシュします。
cmakeによって生成されたmakefileを使用しており、Tcl8.5.7のバージョンに対してリンクしています。VisualC++2008Expressを使用して自分でコンパイルしました。これはmsvcrt、static、threadsを使用してコンパイルされ、結果のライブラリーの名前はtcl85tsx.libです。エラーは次のとおりです。
Tclライブラリは正常に機能し、スレッド拡張機能をロードすることでスレッドスクリプトの例を実行することもできます。私の想定では、メモリ違反にひどい問題があると思いますが、何が起こっているのかわかりません。助けていただければ幸いです。