2013年4月8日月曜日

DXライブラリー日記 007 「馬鹿が使うと危険なLoadGraph()の罠」

気温が上がり、多少は春めいてきた東北の昨今。
なぜか部屋に異臭がたちこめる日々でもあります。
部屋の散らかり具合をおこられたので、頑張って掃除していたら異臭の元凶を発見したであります隊長!!

『机の下で倒れていた醤油注ぎ』

どうしてくれようか、この絨毯に染込んだ挙句に固くガードを決めこんだ黒いシミ。







何も考えずに使っていた関数達のメモリーについて考え始めました。
発端は、ネットブックとデスクトップで挙動が違う&ず~っと読み進めていくと真っ黒い文字が表示されるという状態が発生したからです。真っ黒い■がずらずらと表示される様は中々にショッキングでありました。


とりあえず、
  • LoadGraph()
  • DeleteGraph()
この3つの挙動をイマイチ理解していない事が元凶っぽいので、返り値を常に表示させるようにしてみました。



……。
ははは、こやつめ。
ハンドルを使いまわすと、いとも簡単に指定して消せないメモリーが多数発生すると言うことが、いまさら分かりました。


int load_handle;

load_handle=LoadGraph("picture.jpg");     //load_handle→「12345」
DrawGraph(0,0,load_handle);
load_handle=LoadGraph("character.jpg");    //load_handle→「23456」  この時点で最初に確保したメモリの手がかり消失
DrawGraph(0,0,Load_handle);
DeleteGraph(load_handle);           //2個目に確保したメモリしか消えない


毎回消そうLoadGraph。
気をつけておけばいいのか、ファイル名とハンドルを保持しておく関数を作ってそれ使うべきなのか?


そろそろ参考ページでも見た方がいい気がしてきました。



0 件のコメント: