【初心者】スレを立てる前にココで質問を【Part18】

このエントリーをはてなブックマークに追加
952名前は開発中のものです。:2009/03/10(火) 15:00:14 ID:ANGPCxPA
>949
どっかに自分で解放忘れがある
953名前は開発中のものです。:2009/03/10(火) 15:41:54 ID:8zMMJ5MW
だからfreeのし忘れは無いって。
954名前は開発中のものです。:2009/03/10(火) 16:07:23 ID:qoncgAvF
デバッガの使い方を覚える
955名前は開発中のものです。:2009/03/10(火) 16:30:38 ID:zw759ERO
>>953
あーぁ、言っちゃった。
956名前は開発中のものです。:2009/03/10(火) 16:37:13 ID:7gM7pWnB
>>949
1. メモリの断片化
2. そのとき、他のアプリが動いた
3. 消したつもりが消えてない(画像/音/ヒープ(動的メモリなんちゃら))
4. そもそも扱うデータが時間と共に増加する仕組みになってる(動作ログ/ハイスコアランキング/アンドゥ機能)
957名前は開発中のものです。:2009/03/10(火) 17:07:17 ID:rtcSU9co
delete [] p;となるハズの所をdelete p;と書いてるとか
958名前は開発中のものです。:2009/03/10(火) 17:12:06 ID:+Q8mE1u1
しかし、ここは初心者スレだからな。
自分で確保してるメモリは開放しても、宣言したデバイスの後始末してないとか。
WM_QUIT に開放宣言書いてても、そこを通らずにウインドウ破棄してるとか。
959名前は開発中のものです。:2009/03/10(火) 17:17:06 ID:qoncgAvF
よくあるのはリソース関係だけど、DirectX使ってるならリソース使ってないケースが多いからなあ。
960名前は開発中のものです。:2009/03/10(火) 17:17:36 ID:qoncgAvF
リソースというかGDIオブジェクトとかその辺ね。
961名前は開発中のものです。:2009/03/10(火) 18:32:51 ID:9L0qRj2W
>>956
1.原始的なことしかしてないからないと思う。
2.他のアプリとかそういう問題じゃなくて、タスクマネージャを見ると実行ファイルgame.exeのメモリが単純に上がってくんだよ。
3.何度確かめても関数で唯一のリターンの直前で消してるので、画面が変わる毎に上がる理由にはならないかと。
4.単純(せいぜい配列や構造体)な変数と画像と音しか使ってないので無いはず。

>>957
だから、freeもdeleteも、動的確保を使ってないなら関係ないんだよな? 全く登場しない。

>>958
デバイスとやらを調べてみたけどどうやら3Dの話みたいね。俺は3Dは使ってないので関係ないかと。
WM_QUIT云々は調べてみたけど終了時にプロセスが残ってしまう類のことを言ってるのかな。
タスクマネージャによると、終了時にはきれいさっぱり消えてるから関係ないかと。

>>959
やはり原始的なことしかしてないので関係ないかと。
やってることなんてキャラの動きを計算してその結果によって画像を描写して音を出してるだけだし、
DXライブラリとやらに入ってる描写関数しか使ってないっていうかそれ以外の方法があるのか。


だけど一番の候補はメモリの断片化とやらかなぁ。
962名前は開発中のものです。:2009/03/10(火) 20:13:27 ID:7gM7pWnB
>>961
画像を消してるっていうのは、LoadGraphとDeleteGraphがちゃんと対応してるってことだよね。
ハンドルの番号を間違えたりしてない?
音を消してるっていうのは、LoadSoundMemとDeleteSoundMemがちゃんと対応してるってことだよね。
ハンドルの番号を間違えたりしてない?


メモリ使用量が延々と増加するというのは、どこかでリソース開放のし忘れがあるとしか思えないんだよな。
OSやライブラリのバグが100%無いとは言い切れないけど、
絶対大丈夫だと思ってるところほどバグが隠れやすいぞ
963名前は開発中のものです。:2009/03/10(火) 20:28:57 ID:rtcSU9co
珍しいパターンとしては、スレッドやプロセスとかがが多重起動しまくってるとか、
タイマーで重複動作してるとかかな?あるいは、再起が終わって無いとか。
964名前は開発中のものです。:2009/03/10(火) 20:52:58 ID:gX6KeJBu
>>962ていうかInitで全部削除してるからな。
ライブラリはDXライブラリしか使ってないし、メジャーだよな?
リソースってのが良く分からないんだけどそこまで言うなら調べてみます。

一応そもそもの話確認しておくけど
初回メニュー画面では30MB代で実際のゲーム画面で90台になって少しずつ増えていって100超えて。
メニュー画面に戻っても下がらず、次からはゲーム画面に行く度に15ぐらい増えてゲーム画面継続中にも少しずつ増えていくって異常だよな?

あとみなさん回答ありがとう。
965名前は開発中のものです。:2009/03/10(火) 21:34:21 ID:Lcw+q24v
ステップ実行して一行進める度にメモリ使用量を確認していけばどこでミスがあるか分からんのかな
966名前は開発中のものです。:2009/03/10(火) 21:35:09 ID:RDpUyQ4s
>>961
だから〜、なんていわれても
こっちはそっちのコードなんか知らないよ。
967名前は開発中のものです。:2009/03/10(火) 21:42:38 ID:Lcw+q24v
win32apiは使ってるのかな
968名前は開発中のものです。:2009/03/10(火) 22:45:03 ID:MqhT9ATJ
>デバイス 3Dは使ってないので関係ないかと。
そういう知識程度なら、もうステップ実行しろ
効率的なデバックの仕方書いても無理だと思うから
1行1行見たほうがいい
969名前は開発中のものです。:2009/03/10(火) 22:53:40 ID:gX6KeJBu
やってみたけどあらゆる場面で上昇してる感じかな……
うん、諦めます。ありがとうございました。
970名前は開発中のものです。:2009/03/10(火) 23:01:32 ID:He+uV/pq
画像などのリソース読み込みを疑ってみる。
例えば、こういうパターンに陥るケース。

 1.ゲームを起動    :画像はまだ読みこまれていない。
 2.メニューを表示   :タイトルロゴを読み込み。
 3.実際のプレイ画面 :プレイ用画像を読み込み。メモリ上にはタイトルロゴが残っている。
 4.メニュー表示に戻る:メモリ上にはプレイ用画像とタイトルロゴが残っている。


あと、DXライブラリの専門スレで聞くのもいいかも。
971名前は開発中のものです。:2009/03/10(火) 23:06:11 ID:WwfLXGa2
>>969
あーひとつ思い立ったが
DXライブラリの詳細はよくしらんからあれだけど、
仮に>>969のゲームがテキストを描画していて、文字列描画時に
ハッシュにないキャラクタのフォントデータ(テクスチャ)をリアルタイムに生成する
仕組みだとしたら、テクスチャデータが逐次増加する可能性はある。
こういうケースでは実行中に微妙に使用メモリは増えていく。
972名前は開発中のものです。:2009/03/10(火) 23:09:39 ID:Lcw+q24v
あらゆる場面で上昇してる感じってどういうことだよやる気ねえな釣りか
973名前は開発中のものです。:2009/03/10(火) 23:15:39 ID:J7K6LV9v
一つ言えるのはコードも晒さずに情報の小出しする奴は
まともな回答を最初から期待していないという事だ
974名前は開発中のものです。:2009/03/10(火) 23:17:07 ID:6Ao0edTT
描画するたびにLoadGraphしてるとか
975名前は開発中のものです。:2009/03/10(火) 23:25:28 ID:Lcw+q24v
なんだレス乞食か
976名前は開発中のものです。:2009/03/10(火) 23:26:52 ID:gX6KeJBu
>>970
だからちゃんとInitしてますって。
あと、そうかDX専門スレで聞くべきだったか。

>>971
よくわからないけどDrawStringかDrawFormatStringでDX内臓のフォントで文字文字列描写してるだけ。

>>974
もちろん各フレーム毎のループに入る前にロードしてますって。


うん、諦めます。ありがとうございました。
977名前は開発中のものです。:2009/03/10(火) 23:31:47 ID:He+uV/pq
Initって何さ
978名前は開発中のものです。:2009/03/10(火) 23:35:39 ID:gX6KeJBu
InitGraph  読みこんだグラフィックデータをすべて削除する 。
InitSoundMem  メモリに読みこんだ音声データをすべて消去する 。
DXライブラリ説明ページより
979名前は開発中のものです。:2009/03/10(火) 23:50:41 ID:qVegcq0J
DXライブラリは知らんけどinitって普通初期化でしょ
初期化してもメモリは解放されないと思うけど
980名前は開発中のものです。:2009/03/10(火) 23:53:21 ID:gX6KeJBu
宣言 int InitGraph( void ) ;

概略 読みこんだグラフィックデータをすべて削除する

引数 なし
戻り値  0:成功
  −1:エラー発生

解説  LoadDivGraph、LoadGraph、MakeGraph等で読みこんだ(作成した) グラフィックをすべて削除し、初期化します。これによって占有 されていたメモリ領域を開放することができます。
981名前は開発中のものです。:2009/03/10(火) 23:58:27 ID:6Ao0edTT
>>980
自分もDXライブラリは使ってるけど、その関数は使ったことないな。
> だからちゃんとInitしてますって。
毎フレームInitGraphをコールしてるってこと?

あとこんな説明の仕方しか出来ないようであれば、
DX専門スレに行ってもソース晒さない限り誰も分からないと思うよ
982名前は開発中のものです。:2009/03/11(水) 00:05:41 ID:3QnNSkNm
うん。だからいいんです。
あとループに入る前にロードしてるんだから削除はループ抜けてから関数終了する間に入れてる。
ちなみにDeleteGraphで消してみたけど変化無かった。
983名前は開発中のものです。:2009/03/11(水) 00:11:04 ID:cQglFGGM
>>982
そか、じゃぁ最後に。
フレームのループ中に、DXライブラリのLoad〜関数・Make〜関数をコールしてないと言い切れる?
984名前は開発中のものです。:2009/03/11(水) 00:12:31 ID:3QnNSkNm
言いきれる。
985名前は開発中のものです。:2009/03/11(水) 00:17:16 ID:WxzXpBgn
Load、Makeを使う関数をループ内でコールしてないとも言い切れる?
986名前は開発中のものです。:2009/03/11(水) 00:20:48 ID:EKNe0Vt8
DXライブラリソース公開してたから調べてみたよ。
DrawStringは初めて描画するキャラクターコードのテクスチャを
随時キャッシュしていくから、文字を多く使うゲームならメモリ
使用量は必然的に増えてく。他の関数は見てないけど、
ライブラリ内部で高速化のためになんらかのインスタンスのキャッシュを
逐次生成していく仕組みがどこかにあればそれなりに増えていくだろうね。
そのへんはDXスレで聞いてみたら?
987名前は開発中のものです。:2009/03/11(水) 00:21:48 ID:3QnNSkNm
言いきれる。もういいから。
988名前は開発中のものです。:2009/03/11(水) 00:23:16 ID:3QnNSkNm
>>986 ありがとうございました。
989名前は開発中のものです。:2009/03/11(水) 00:26:09 ID:cQglFGGM
>>987
なるほど、じゃぁ残るは>>986の可能性か
ムービーとかFileRead〜関数は。。使ってないよね。
990名前は開発中のものです。:2009/03/11(水) 00:29:43 ID:3QnNSkNm
>>989 ムービーは無い。FileReadは何それって感じ。一応検索してももちろん無かった。
あともう1000行っちゃいそうだしほんとお騒がせしてすみませんでした。
991名前は開発中のものです。:2009/03/11(水) 00:38:53 ID:WxzXpBgn
そのソース固有の問題なのか、DXライブラリ自体の問題なのかが気になるからな
ロード関係をWinMainの頭で全部やってInitをDxLib_Endの直前前に持ってきていても
なるなら986みたいなのが原因かな

992名前は開発中のものです。:2009/03/11(水) 00:54:47 ID:A+tEhrDv
そろそろ次スレ頼む
993名前は開発中のものです。:2009/03/11(水) 18:00:04 ID:teoBVoN1
立ててみました
【初心者】スレを立てる前にココで質問を【Part19】
http://pc11.2ch.net/test/read.cgi/gamedev/1236761855/
994名前は開発中のものです。:2009/03/12(木) 18:52:40 ID:pi3cUgBv
>>990もう帰ってこないことを心から願っています
995名前は開発中のものです。:2009/03/12(木) 22:28:16 ID:abX7xYpD
ここから俺の日記
996名前は開発中のものです。:2009/03/12(木) 22:29:40 ID:abX7xYpD
今日は4時に寝て8時に起きるつもりが、気づいたら夜の7時だった
997名前は開発中のものです。:2009/03/12(木) 22:30:11 ID:abX7xYpD
俺はこれからどうすればいいんだ
998名前は開発中のものです。:2009/03/12(木) 22:31:13 ID:abX7xYpD
とりあえずオナニーしてたら、こんな時間になってしまった
999名前は開発中のものです。:2009/03/12(木) 22:32:01 ID:abX7xYpD
俺の日記 終わり
1000名前は開発中のものです。:2009/03/12(木) 22:44:31 ID:jpTDfEXu
1000なら次スレにエスパー常駐
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。