人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

VC++6 DLLで呼び出すrenameについて質問です。

rename(ファイル名ポインタA、ファイル名ポインタB)
でファイル名を変更しました。

ファイル名Bはrenameを呼び出すメソッド内でmallocしたものですので、
renameを呼び出した次の行で
free(ファイル名ポインタB)としています。

このときfree(ファイル名ポインタB)の部分を実行するとなぜか
処理が落ちてしまいます。

エラーメッセージ
Debug #Errror!
Program:xxxxx.exe
DAMAGE:after Normal block(#48)at x04642030
(press Retry to debug the application)

これはどのような原因が考えられますか?
デバッグ実行してもメモリ開放していないことについて
警告するメッセージが表示されないなども気になります。
以上宜しくお願いします。



●質問者: harunoharuno
●カテゴリ:コンピュータ
✍キーワード:application AT DAMAGE DLL exe
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● ko8820
●100ポイント ベストアンサー

mallocした領域より

ファイル名が長いという落ちは?

ファイル名の最後は\0で必要があるので、

必要とされるメモリーは文字の長さよりも長い

-----

メモリー破壊してる可能性あり

http://q.hatena.ne.jp/answer

◎質問者からの返答

回答ありがとうございます。

ご指摘頂いた内容をもとに調べてみたところ

\0が文字列の中にありませんでした。

そのためfreeしたときに隣の場所まで開放されエラーになってしまったのですね

助かりました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ