トップページ > 過去ログ > 記事閲覧
Alloc memory dump...について
名前:EMIYA 日時: 2006/11/02 23:30

こんばんわ、EMIYAです。 前回の質問時に返事ができなくてすいませんでした^^; 少々PCが壊れるやら入試が迫るやらでばたばたしてまして今頃になりました。 前回の質問のことですが、データが吹っ飛んでしまったのでなかった事にでお願いします^^; 今回の質問なんですが、Visual C++.net2003の方でコンパイルして実行したところ正常に動作はしたのですが、 3241: Alloc memory dump Total size:0(0.000kb) Alloc num:0 と出ました。 正常に起動したので無視していたのですが、Debugフォルダに作られるEXEの方で実行してみたところ、エラーがでて異常終了してしまいます。 AppName: layer_test3.exe AppVer: 0.0.0.0 ModName: ntdll.dll ModVer: 5.1.2600.2180 Offset: 0003426d エラー署名には↑のようなものがでてきましたが何がなんだかわかりません^^;

Page: 1 |

Re: Alloc memory dump...について ( No.1 )
名前:管理人 日時:2006/11/05 12:56

 EMIYAさんどうも、DXライブラリの管理人です。 > 3241: Alloc memory dump Total size:0(0.000kb) Alloc num:0  こちらの出力自体は確保したメモリに解放忘れが無いかどうかを 確かめる為のものなので、特に問題のあるものではありません。 (Total size が 0 になっているので解放を忘れているメモリ領域は 無いことを示しています)  なので、原因は他にあると言うことになります。 もし EMIYA さんの方で思い当たる節が無いのでしたらDXライブラリに 原因がある可能性が高いと思いますので、宜しければプロジェクトごと ZIP 等で圧縮して BQE00322@nifty.com までメールで送ってやって下さい。m(_ _)m
Re: Alloc memory dump...について ( No.2 )
名前:EMIYA 日時:2006/11/05 21:16

ご返答ありがとうございます。 早速送らせて頂きました。 お忙しい中でしょうがよろしくお願いします。
Re: Alloc memory dump...について ( No.3 )
名前:管理人 日時:2006/11/06 12:24

 EMIYAさんどうも、DXライブラリの管理人です。  メール拝見致しました。  エラーの内容はメモリの不正なアクセスで、layer.cpp の _CreateImage 関数内での画像ファイル名を保存するメモリ領域の サイズ指定に sizeof(name) としてしまっていることが原因です。  sizeof( name ) とした場合はサイズは文字列の長さではなく、 char 型ポインタ name のサイズである 4 になってしまうので、 終端文字(ヌル文字)も含めると3文字以上の文字列が保存できない サイズのメモリしか確保することが出来ません。  なので、こちらは malloc( strlen( name ) + 1 );  とする必要があります。( strlen は文字列の長さを取得する関数で、 1 を足しているのは、終端文字(ヌル文字)分です )  そして、name が NULL の場合には文字列 "rootLayer.jpg" を コピーされていますので、メンバー変数 name 周りの処理は if( name == NULL ) name = "rootLayer.jpg"; object->name = (char *)malloc( strlen( name ) + 1 ); strcpy(object->name, name);  このようにするとすっきりすると思います。
Re: Alloc memory dump...について ( No.4 )
名前:EMIYA 日時:2006/11/06 14:11

詳しい解説どうもありがとうございます。 こちらのミスでしたか^^; やはりもうしばらくC言語の勉強が必要なようですね・・・

Page: 1 |