JRA公式競馬データ配信サービス JRA-VAN Data Lab.

JRA-VAN DataLab.

競馬ソフト開発コーナー

JV-Link 質問箱

一括表示 リストに戻る
タイトルC++におけるJVGetsのメモリ解放方法
記事No7538
投稿日: 2025/04/16(Wed) 07:57
投稿者imetk
お世話になっております。

「JRA-VAN Data Lab.開発ガイド(イベントC++)」 を参考に C++で開発をしてい
ます。

JVOpenで取得したデータを読み込む方法としてJVReadとJVGetsがありますが、J
VReadを使用した方法では問題なく動作できています。

パフォーマンス向上のため、JVGetsを使用した方法に切り替えたいのですが、
インターフェース仕様書によるとアプリ側でメモリ解放が必要とのこと。実際に
実行してみるとメモリリークが発生し、メモリ使用量が1,500MB程度になったと
ころで例外が発生してしまいます。

JVGetsでデータを取得する毎に、buffのメモリを開放したいのですが、全く方
法がわからず困っております。
こちらにソースコードを貼ろうと思いましたが、投稿制限事由に引っかかって
しまい、貼れませんでした。

サンプルプログラム 「sample1_VC2019」 を確認しましたが、こちらは作成日
が2003年のようで、現在と書き方がだいぶ変わっており参考になりませんでした

どなたかお知恵をお貸しいただけないでしょうか。

タイトルRe: C++におけるJVGetsのメモリ解放方法
記事No7540
投稿日: 2025/04/18(Fri) 06:14
投稿者サメの餌
imetkさん、おはようございます。

ちょっとC++の話ではないので参考になるのかも分かりません。
自分自身もC++は使ってないし、C#とC++が別物だとは思ってます。

> JVGetsでデータを取得する毎に、buffのメモリを開放したいのですが、

実はこちらの掲示板の過去ログP0006の2ページ目辺りのNo.6853にたかひろさん
が「C#でのメモリ解放」ってスレがあるんですが、そこを読まれるとヒントにな
るかもです。自分はC#なのでこのスレのおかげで無事に現在に至ってます。

タイトルRe: C++におけるJVGetsのメモリ解放方法
記事No7545
投稿日: 2025/04/23(Wed) 09:49
投稿者JRA-VANソフトサポート
JRA-VANソフトサポート 鷹森です。
DataLab.サービスをご利用頂きまして誠にありがとうございます。

ご認識頂いている通り、JVGetsを使用する際にはアプリケーション側でメモリ
解放が必要です。
サンプルプログラムでメモリ解放を実施している箇所は以下です。
・sample1_VC2019\sample1Dlg2.cpp 305〜307行目
  VariantClear(&varBuff);
  VariantClear(data);
  SafeArrayDestroy(psa);

上記関数を参考にimetk様のソースコードで同様にメモリ解放していただくよう
お願いいたします。

以上、よろしくお願いいたします。

ウィンドウを閉じる