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言語の勉強が必要なようですね・・・
|