HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2018
1112
(´ω`)SQliteの動作が変……2解決


(´ω`)

リンク

2018/11/12(Mon) 09:33:53|NO.85813

HSPの、Ver.3.4とVer.3.5で、同じソースなのに動作が違う、というお話。

タスクマネージャを起動し、以下のコードをHSPの 3.4 および 3.5 でそれぞれ実行してみて
ください。3.4だと、何度スペースを押しても問題は特に起きませんが、3.5で実行をすると
「メモリが確保できません」というエラーが出ます。

※一度実行してエラーが起きなくても、タスクマネージャで見るとメモリ使用量が莫大に増加
しており、以降キーを押すごとにどんどん増えていき、いずれはエラーが発生するはずです。

; sqleleの動作確認用 #include "sqlele.hsp" exist "test.db" if strsize>-1 { delete "test.db" } sql_open "test.db" sql_q "CREATE TABLE buf(id INTEGER PRIMARY KEY,prm01 INTEGER,prm02 INTEGER,prm03 INTEGER,prm04 INTEGER,prm05 INTEGER,prm06 INTEGER,prm07 INTEGER,prm08 INTEGER,prm09 INTEGER)" randomize repeat 100 title "100セット "+str(cnt+1)+" 回目" : wait 1 sql_q "begin" repeat 100 sql = "INSERT INTO buf(prm01,prm02,prm03,prm04,prm05,prm06,prm07,prm08,prm09) VALUES(" sql += str(rnd(32768))+","+str(rnd(32768))+","+str(rnd(32768))+","+str(rnd(32768))+","+str(rnd(32768))+"," sql += str(rnd(32768))+","+str(rnd(32768))+","+str(rnd(32768))+","+str(rnd(32768))+")" sql_q sql loop sql_q "commit" loop title "準備完了" mes "以降、スペースキーを押すたびにテーブルを取得しに行きます\nESCキーで終了" *main wait 1 getkey a, 27 : if a { end } getkey a, 32 if a { mes "SELECT文実行開始" : wait 1 sql_q "SELECT * FROM buf" mes "┗実行終了、タスクマネージャを確認してみること" } goto *main

SQLeleのどこかを修正すれば、回避できるでしょうか?
もしくは全く別の問題でしょうか……?(´・ω・`)



この記事に返信する


さか

リンク

2018/11/12(Mon) 21:43:13|NO.85816

Ver.3.50でエラーでることを確認しました。

Ver.3.51で実行してみたところメモリ増加しませんでした。
Ver.3.51では直ってるようです。



sino

リンク

2018/11/12(Mon) 23:42:43|NO.85817

HSPのバグです。

どこにも注意が書かれてないのでこれからHSPを始める人全員とこのバグを知らない人は全員、様々な形でこの問題にハマります。
メモリを食い潰してメモリエラーを吐くまでユーザーが気付かない事にこの問題の凶悪さがあります。
この件に関して公式からのフォローは皆無なので今回のように被害が広がり続けています。

・HSP3.5では従来の方法で文字列変数を使わないでください。
・文字列変数を扱いたい場合は必ずsdimで範囲を予め宣言してください。
 (宣言範囲を超過した分はリークします。いきなりa="A","B"とか書いちゃダメ。)
・一度使い始めた文字列変数を途中で文字列変数以外にしないでください。
・split命令などの配列自動確保が発生する命令は使わないでください。大量にリークします。
・文字列を扱うモジュールやDLLは使用しないでください。

参考

・最初の報告?
http://hsp.tv/play/pforum.php?mode=all&num=82755
・メモリリークの例が細かくまとめられています
http://hsp.tv/play/pforum.php?mode=all&num=84231
・私も不安で最近質問しましたが放置されてます
http://hsp.tv/play/pforum.php?mode=all&num=85642
他にもあるかも。思い出せる記事はこれだけ。

放置の方針なのか、様子から見て公式版の修正の予定は当面なさそうです。
HSPプロ生ちゃんエディションではこの問題をサイレント修正しています。
プロ生ちゃんエディションを探して使ってください。



ONION software Copyright 1997-2023(c) All rights reserved.