- 170 名前:中の人 mailto:sage [04/10/29 19:51:14]
- >>164
とりあえず、bufのポインタ自体を保持しておかないと正しく開放できないですね。 duplicate freeって、FREE()呼んだ時点じゃなく、アプリ終了時とかに表示されませんか? 確保したのはbuf(サイズはdwSize)なのに、mdata.pDataはbuf+offset(サイズはdwSize-offset)を 指しているので、FREE(pData)を呼んでもbuf自体は開放されてないです。 なので、「アプリ終了時に未開放のメモリが残る→実行環境がbufを開放する→bufとpDataの 重複する領域が二重開放になる」という現象が発生します。 あと、ISHELL_FreeResDataを使うのが正しいです。 (わかりにくい説明ですみません) 結論は「pDataじゃなくbufに対してISHELL_FreeResData()使ってください」 >>169 ARMのコンパイラは、 if(nRet = IMENUCTL_HandleEvent(pme->pIMenu, eCode, wParam, dwParam)) { /* MenuCtlがイベントを処理したっぽい */ return TRUE; } みたいなコードを書くと、「代入の結果を条件判断に使ってるよ?」と警告をはきます。 (代入じゃなく比較したかったんじゃないの? と言いたいらしい) warningが溜まりすぎると「too many warning」とその時点でエラー扱いに なってしまう(コンパイルできない)ので、条件文の中で代入を使わないほうが良いです。 こう書いたからといって危険なバイナリが出来るわけではないですから、 コンパイルさえ通ればこう書いても問題ありません。
|

|