質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

Visual C++

Microsoft Visual C++はWindowsのCとC++の統合開発環境(IDE)であり、コンパイラやデバッガを含んでいます。

Oracle Database 11g

Oracle DatabaseはRDBMSの商品です。具体的な発売商品として知られているのが、 Oracle9i、Oracle10g、Oracle 11gとOracle 12cです。

Q&A

解決済

2回答

9809閲覧

Microsoft Visual C++ Runtime Library Assertion Failed エラーの原因と解決策が知りたいです

dubfishmans

総合スコア7

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

Visual C++

Microsoft Visual C++はWindowsのCとC++の統合開発環境(IDE)であり、コンパイラやデバッガを含んでいます。

Oracle Database 11g

Oracle DatabaseはRDBMSの商品です。具体的な発売商品として知られているのが、 Oracle9i、Oracle10g、Oracle 11gとOracle 12cです。

0グッド

0クリップ

投稿2019/08/19 01:38

前提・実現したいこと

Oracle DBに接続する為のツールを立ち上げようとする以下のようなメッセージが出て起動しません。

何か原因として考えれることはありますか?

社内の他の人は問題なく起動していて自分のパソコンにだけエラーが出て困っています。

発生している問題・エラーメッセージ

Microsoft Visual C++ Runtime Library Assertion Failed Program: ... File: src\include\ociwrap.h Line:126 Expression: OCIEnvCreate(&m_hOCIEnv, mode, (dvoid *)0, 0, 0, 0,(size_t) 0, (dvoid **)0) == OCI_SUCESS For information on how your program can cause an assertion failure,see the Visual C++ documentation on asserts (Press Retry to debug the application - JIT must be enabled)

これと

外部例外 80000003

該当のソースコード

ソースコード

試したこと

Visual C++のランタイムライブラリをすべてアンインストール後、再インストール。

補足情報(FW/ツールのバージョンなど)

Oracle Database 11g

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

Assertion Failedというエラーですから、実行時に満たされているべき条件「OCIEnvCreate(&m_hOCIEnv, mode, (dvoid *)0, 0, 0, 0,(size_t) 0, (dvoid **)0) == OCI_SUCESS」が満たされていない事が直接の原因です。

OCIEnvCreate関数の構文は以下のようになっています。
(OCIEnvCreate())

sword OCIEnvCreate ( OCIEnv **envhpp, ub4 mode, CONST dvoid *ctxp, CONST dvoid *(*malocfp) (dvoid *ctxp, size_t size), CONST dvoid *(*ralocfp) (dvoid *ctxp, dvoid *memptr, size_t newsize), CONST void (*mfreefp) (dvoid *ctxp, dvoid *memptr)) size_t xtramemsz, dvoid **usrmempp );

アサーションで使われているOCIEnvCreate関数を見ると
『OCIEnvCreate(&m_hOCIEnv, mode, (dvoid *)0, 0, 0, 0,(size_t) 0, (dvoid **)0)』
となっていて、ポインタであるべき引数の多くが 0 ですから、それらのポインタでアクセスしようとすればAccess Violationなどの例外が発生すると考えられます。

==
対応策
OCIEnvCreate関数に適切な引数を与える!!

問題は src\include\ociwrap.h というファイルの126行目で起きているので、まず注目すべきは1行目から126行目までのプログラムです。

投稿2019/08/19 02:10

coco_bauer

総合スコア6915

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

同じエラー が参考になるでしょうか?
エラーが起きているコードもきちんと載せた方が適切なコメントが付きやすいかと。

投稿2019/08/19 01:57

Orlofsky

総合スコア16415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問