OO4Oを使ってVCからアクセスする方法について – プログラミング – Home

OO4Oを使ってVCからアクセスする方...
 
通知
すべてクリア

OO4Oを使ってVCからアクセスする方法について


ひろ
 ひろ
(@ひろ)
ゲスト
結合: 24年前
投稿: 149
Topic starter  

開発環境
Windows2000 VC++6.0sp5 Oracle9.2.0

ダイアログベースのアプリケーションを作成し、OO4Oを使ってオラクルに
アクセスしていますが下記のようなソース(エラー処理等は省略)
でメモリリークのエラーが発生してしまいます。

static OSession GSe;
static ODatabase GDb;
--プログラム起動時
{
OStartup(OSTARTUP_MULTITHREADED); //Oracle OLE 初期化
// SESSION OPEN
GSe.Open();
// DB OPEN
GDb.Open(GSe, DB, USR, PASS, ODATABASE_DEFAULT);
}
--プログラム終了時
{
GDb.Close();
GSe.Close();
OShutdown(); //Oracle OLE 終了処理
}

VC++のデバッグ環境終了時にメモリリークのエラーが出てしまいます。
上記のOpenとCloseをコメントアウトするとメモリリークが出なくなります。
他に、Open時、またはClose前に他に必要な手続きがあるのでしょうか?
ちなみに、Oracle 8i ではメモリリークは出ないようです。

VC++というよりも、オラクルの内容で恐縮ですが、
知っている方がいましたら教えてください。


引用解決済
トピックタグ
wood
 wood
(@wood)
ゲスト
結合: 23年前
投稿: 895
 

>上記のOpenとCloseをコメントアウトするとメモリリークが出なくなります。
と言うことは「OpenとClose」は不要なものなのではないですか

エラーが出なくてデータも利用できているんですよね


返信引用
ひろ
 ひろ
(@ひろ)
ゲスト
結合: 24年前
投稿: 149
Topic starter  

>>上記のOpenとCloseをコメントアウトするとメモリリークが出なくなります。
>と言うことは「OpenとClose」は不要なものなのではないですか

>エラーが出なくてデータも利用できているんですよね

回答ありがとうございます。

すいません。説明が少し足りませんでした。
Openしないとデータの利用は出来ません。
もともとのソースでは、変数GDbを使ってデータベースにアクセスします。
現象が、再現できる最小部分までソースを削っていった結果こうなりました。

個人的には、Close()周りがかなり怪しいと感じています。
OO4Oのヘッダファイルを見てClose()以外に開放する方法を探して
見たのですが、それっぽいものが見つかりません。
使用方法が間違っているか、Close()以外に終了の方法が存在するのか、
OO4Oのバグなのか、今のところ解決に至っていません。

現在使用中のOO4Oのバージョンは、9.2.0.4.4です。

なんか、あまりVC++とは関係なく申し訳ありません。


返信引用
FAY
 FAY
(@FAY)
ゲスト
結合: 22年前
投稿: 14
 

> OStartup(OSTARTUP_MULTITHREADED); //Oracle OLE 初期化
引数をOSTARTUP_MULTITHREADEDにしてるのはどうしてでしょう?


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

で、Oracleさんはこの件についてなんと仰ってるんでしょう?


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました